关于query.filter()的一些常用的方法

equals:

query.filter(User.name=='ed')
not equals:

query.filter(User.name!='ed')
like:

query.filter(User.name.like('%ed%'))
in:

query.filter(User.name.in_(['ed','wen','jask']))
not in:

query.filter(~User.name.in_(['ed','wen','jask']))
in null:

query.filter(User.name==None)
is not null:

query.fillter(User.name!=None)
and:

query.filter(and_(User.name'ed',Username'ed jones'))
or:

query.filter(or_(User.name= 'ed',User.name=='wendy')
match:

query.filter(User.name.match('wendy'))
match() 使用特定于数据库的匹配或包含函数;它的行为会随着后端而变化,并且在诸如SQLite这样的一些后端是不可用的。

all():

返回一个列表

first():

返回至多一个结果,而且以单项形式,而不是只有一个元素的tuple形式返回这个结果

one():

返回且仅返回一个查询结果。当结果的数量不足一个或者多于一个时会报错

one_or_one():

当结果数量为0时返回None, 多于1个时报错

scalar():

成功则返回该行的第一列的列号

text():

from sqlalchemy import text
sql>>> for user in session.query(User).
... filter(text("id<224")).
... order_by(text("id")).all():
... print(user.name)

ed
wendy
mary
fred
params():传递参数

session.query(User).filter(text("id<:value and name=:name")).
... params(value=224, name='fred').order_by(User.id).one()

<User(name='fred', fullname='Fred Flinstone', password='blah')>
from_statement():直接使用完整的SQL语句,但是要注意将表名和列名写正确

session.query(User).from_statement(
... text("SELECT * FROM users where name=:name")).
... params(name='ed').all()

[<User(name='ed', fullname='Ed Jones', password='f8s7ccs')>]
count():返回符合条件的总数

session.query(User).filter(User.name.like('%ed')).count()

2
func_count():可以直接指出要测次数的某一项

from sqlalchemy import func
sql>>> session.query(func.count(User.name), User.name).group_by(User.name).all()

[(1, u'ed'), (1, u'fred'), (1, u'mary'), (1, u'wendy')]

posted @   zybyekai  阅读(535)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示