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():

all()返回查询到的所有对象

first():

first()返回查询到的第一个对象【first获取一条数据,all获取多条数据

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')]

转载自:https://blog.csdn.net/young_kp/article/details/81199185?utm_source=blogxgwz1

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值