查询数据
# 查询数据
支持高级过滤选项,比如大于 (__gt)、小于 (__lt) 以及它们的包含性对应词 (__gte, __lte) 等运算符来查询记录。过滤器支持在单个记录 (get)、获取多个记录 (get_multi)、检查记录是否存在 (exists)、计数 (count)、更新 (update) 和删除 (delete)中使用。
当前支持的单参数过滤器有:
- __gt - 大于
- __lt - 小于
- __gte - 大于或等于
- __lte - 小于或等于
- __eq - 等于
- __ne - 不等于
- __is - 用于测试 True, False 和 None 的身份
- __is_not - "is" 的否定
- __like - SQL "like" 搜索特定文本模式
- __notlike - "like" 的否定
- __ilike - 不区分大小写的 "like"
- __notilike - 不区分大小写的 "not like"
- __startswith - 文本以给定字符串开头
- __endswith - 文本以给定字符串结尾
- __contains - 文本包含给定字符串
- __match - 数据库特定的匹配表达式
- __between - 在两个数值之间
- __in - 包含在内
- __not_in - 不包含在内
- __or - 用于 OR 表达式的库支持运算符
crud = SenweaverCRUD(Item)
# 查询单个记录
item = await crud.get(db=db,id=1)
# 查询多个记录 price>=1 的所有记录
items = await crud.get_multi(
db=db,
price__gte=1,
)
# SELECT * FROM item WHERE price BETWEEN 1 AND 10;
items = await crud.get_multi(
db=db,
price__between=(1, 10),
)
# SELECT * FROM item WHERE price <= 1 OR price >= 10;
items = await crud.get_multi(
db=db,
price__or={'lte': 1, 'gte': 10},
)
# SELECT * FROM item WHERE price <= 10 AND num >= 2;
items = await crud.get_multi(
db=db,
price__lte=10,
num__gte=2,
)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 根据字典动态构建查询条件
支持树状结构复杂查询
{
"__or": [{
"__or": [{
"__or": [{
"dept_belong_id": "85044279115846",
"num__gt": 1,
"price__or": {
"lte": 1,
"gte": 10
},
"type__in":[2,3]
}, {
"dept_id": "85044279115846"
}]
}]
}, {
"__false": null
}]
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
上次更新: 2025/02/28, 10:58:46