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)
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 视图继承 扩展视图使用inherit_id字段引用父类,其中arch字段由任意数量的xpath元素组成expr在父...
    葡萄柚子茶阅读 5,466评论 0 4
  • CSS CSS3 布局属性 标签的权值为1,类选择符的权值为10,ID选择符的权值最高为100 !importan...
    53cfdb355418阅读 514评论 0 0
  • pyspark.sql module Module context Spark SQL和DataFrames中的重...
    盗梦者_56f2阅读 5,639评论 0 19
  • 全书完整目录请见:Odoo 12开发者指南(Cookbook)第三版 本章中,我们将讲解如下内容: 定义模型方法及...
    AlanHou阅读 1,119评论 0 1
  • .数据库 数据库的发展: 文件系统(使用磁盘文件来存储数据)=>第一代数据库(出现了网状模型,层次模型的数据库)=...
    小Q逛逛阅读 1,068评论 0 2

友情链接更多精彩内容