Orchestra Python API | read 方法的 filters 參數(shù)
前言:
要使用 Orchestra Python API (下文簡稱 api) 查詢數(shù)據(jù),就需要使用 read 方法。
read 方法提供豐富的過濾、聚合、排序選項(xiàng),在用戶權(quán)限范圍內(nèi)支持查詢一切實(shí)體類型,且線程安全,可放心使用。
在本節(jié)中我們通過案例著重分析 read 方法的 filters 參數(shù),它既是 api 的靈魂,又是學(xué)習(xí)過程中的一大難點(diǎn)。
正文:
filters 參數(shù)用于傳入 filters 語句,過濾出滿足條件的數(shù)據(jù)。
filters 語句與后端接口同構(gòu),確保 api 與前端的查詢結(jié)果一致。
filters 語句覆蓋絕大部分查詢需求,即使是復(fù)雜的跨表查詢依然能保證較高的性能。
一:下面我們從 filters 語句的一般形式開始,以下是一個(gè)最基本的查詢子句:
我們構(gòu)造一條具體的查詢語句,把它作為 filters 參數(shù)時(shí)會(huì)查詢所有滿足 name 字段的值等于 Layout?的數(shù)據(jù):
讓我們寫一條更完整的 read 語句,下面的例句會(huì)查詢所有滿足 name 字段的值等于 Layout?的 Task 數(shù)據(jù)。
上面這條 read 語句可以很直觀地翻譯成 sql 偽代碼,有 sql 經(jīng)驗(yàn)的開發(fā)者可以很輕易地抓住其中的要點(diǎn):
二:在實(shí)際應(yīng)用中,我們的查詢條件語句往往會(huì)更為復(fù)雜,不僅會(huì)包含比較運(yùn)算符,還會(huì)包含邏輯運(yùn)算符,我們通常使用邏輯運(yùn)算符連接兩條或者更多的查詢子句,其一般形式為:
當(dāng)然它可以擴(kuò)展更為復(fù)雜的形式。
下面的 read 語句的 filters 參數(shù)就包含了一個(gè)名為 or 的邏輯運(yùn)算符,表示邏輯和,即“或者”的關(guān)系:
這條 read 語句的意思是:查詢所有滿足 name 字段的值等于 Layout?或者?name 字段的值等于 Animation 的?Task?數(shù)據(jù)。
如果要表示邏輯積,即“并且”的關(guān)系,則需要使用名為 and 的邏輯運(yùn)算符,語句如下:
這條 read 語句的意思是:在 Task 表中查詢所有滿足 name 字段的值等于 Layout?并且?name 字段的值等于 Animation 的數(shù)據(jù)。
name 字段的值既要等于 Layout 又要等于 Animation,這條 read 語句的執(zhí)行結(jié)果想必一定為空。
實(shí)際上 and 邏輯運(yùn)算符是可以省略的,我們經(jīng)常看到下面的 read 語句,其中的 filters 語句包含了三個(gè)查詢子句,默認(rèn)使用了 and 邏輯運(yùn)算符:
三:有了以上對 filters 參數(shù)直觀的了解,下面讓我們更全面地了解 filters 參數(shù)。
filters 參數(shù)的構(gòu)造語句至少包含一個(gè)查詢子句,其中一定包含一個(gè)比較運(yùn)算符。
filters 參數(shù)的構(gòu)造語句可能包含一個(gè)或多個(gè)邏輯運(yùn)算符,由它連接兩個(gè)以上的查詢子句。
1. ?Orchestra Python API 提供了豐富的比較運(yùn)算符,它們分別是:
開發(fā)者可以使用它們構(gòu)造條件更復(fù)雜的查詢子句,需要注意的是,less_than、greater_than 要求子句中值為數(shù)字類型,in、not_in 要求子句中值為列表類型。比如:
而 is、is_not 運(yùn)算符則要求值與字段類型一致,比如 project 字段是單一實(shí)體類型,則值應(yīng)該是實(shí)體類型,即包含 id 與 type 的字典,比如:
contains、excludes、starts_with、ends_with 要求值為字符串類型,比如:
2. Orchestra Python API 提供了兩個(gè)邏輯運(yùn)算符,它們分別是 or 和 and,在上面的例子中我們已經(jīng)有所了解,實(shí)際上利用邏輯運(yùn)算符,我們可以構(gòu)造更為復(fù)雜的 filters 語句:
這條語句表示查找滿足 project 字段等于?{"id": 1, "type": "Project"} 且 name 字段等于 Animation 的 Task 數(shù)據(jù)或者查找 name 字段等于 Layout 的 Task 數(shù)據(jù)。
3. Orchestra Python API 在查詢子句中支持使用路由路徑型字段。
路由路徑型字段一般表示為:
通過路由路徑型字段我們可以輕松地實(shí)現(xiàn)跨表查詢,比如:
這條 read 語句就表示查詢滿足以下 entity 字段條件的 Task 數(shù)據(jù),即 entity 字段指向的 Shot 數(shù)據(jù) 的 code 字段的值必須包含 001。

對我們的產(chǎn)品有興趣,請聯(lián)系我們。
對我們的職位有興趣,請聯(lián)系我們。
我們的主頁:
orchestra-technology.com
trial.orchestra-technology.com
API:
https://github.com/orchestra-technology/python-api.git
申請?jiān)囉茫?/strong>
service@orchestra-technology.com