Python ORM之SQLAlchemy查询笔记

查询

过滤

query.filter()

根据关键字过滤

query.filter_by()

返回列表

query.all()

返回第一个元素

query.first()

有且只有一个元素时才正确返回

query.one()

类似one,但如果没有找到结果,则不会引发错误

query.one_or_none()

调用one方法,并在成功时返回行的第一列

query.scalar()

计数

query.count()

排序

query.order_by()

连接查询

query.join()

以为字段名(列)设置别名

query(column.label())

查询常用筛选器运算符

# 等于
query.filter(User.name == 'zzy')
 
# 不等于
query.filter(User.name != 'zzy')
 
# like和ilike
query.filter(User.name.like('%zzy%'))
query.filter(User.name.ilike('%zzy%')) # 不区分大小写
 
# in
query.filter(User.name.in_(['zzy', 'Judy', 'jack']))
query.filter(User.name.in_(
    session.query(User.name).filter(User.name.like('%zzy%'))
))
# not in
query.filter(~User.name.in_(['zzy', 'Judy', 'jack'])) 
 
# is
query.filter(User.name == None)
query.filter(User.name.is_(None))
 
# is not
query.filter(User.name != None)
query.filter(User.name.is_not(None))
 
# and
from sqlalchemy import and_
query.filter(and_(User.name == 'zzy', User.fullname == 'ionc'))
query.filter(User.name == 'zzy', User.fullname == 'ionc')
query.filter(User.name == 'zzy').filter(User.fullname == 'ionc')
 
# or
from sqlalchemy import or_
query.filter(or_(User.name == 'zzy', User.name == 'Judy'))
 
# match
query.filter(User.name.match('Judy'))

使用文本SQL

from sqlalchemy import text
for user in session.query(User).\
        filter(text("id<224")).\
        order_by(text("id")).all():
        print(user.name)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值