ToB企服应用市场:ToB评测及商务社交产业平台

标题: python SQLAlchemy ORM——从零开始学习 04 如何过滤(筛选)数据库中的数 [打印本页]

作者: 梦应逍遥    时间: 2025-1-10 22:10
标题: python SQLAlchemy ORM——从零开始学习 04 如何过滤(筛选)数据库中的数
04 如何过滤(筛选)数据库中的数据

从数据库中获筛选数据主要应用以下几个接口:filter、filter_by、以及 where。前两个在 02已经展开说过,先展开说where接口
前情提要:依赖03提及的model【本质上就是数据库的链接,有可忽视】
当前的数据库表内容如下,仅作例子,不相同根据自身数据库操纵即可:
4-1 通过where进行筛选

4-2 综合利用where进行筛选

颠末上述的知识,已经能把握逻辑运算筛选了,出个题,读者可以自行尝试,能够达到本身预期的结果则过关了。
all code:
  1. from model import User, Engineimport sqlalchemyfrom sqlalchemy.orm import sessionmakerfrom sqlalchemy import or_, and_, not_Session = sessionmaker(bind=Engine)session = Session()def search_by_where():    # results = session.query(User).where(User.age > 23, User.name == "arthur").all()    results = session.query(User).where( (User.age > 30) | (User.name == "caster") | (User.name == "arthur") ).all() #两种或的结果是同等的,根据需要选择即可    # results = session.query(User).where(    #     sqlalchemy.or_(    #     User.age > 30, User.name == 'caster',    #     )    # ).all()   #可以体会一下两者的差别,判定条件少了一个名字==arthur    for result in results:        print(result)def query_and():
  2.     # results = session.query(User).where(sqlalchemy.and_(
  3.     #     User.age >= 25, User.name == "caster")
  4.     # )
  5.     results = session.query(User).where((
  6.         User.age >= 25) & (User.name == "caster")
  7.     )
  8.     for result in results:
  9.         print(result)def query_by_not():
  10.     results = session.query(User).where(
  11.         sqlalchemy.not_(User.name == 'caster')
  12.     )
  13.     for result in results:
  14.         print(result)def answer():
  15.     results = session.query(User).where(
  16.         or_(
  17.             not_(User.name=='arthur'), (
  18.                 and_(User.age > 22, User.age < 30)
  19.             )
  20.         )
  21.     ).all()
  22.     for result in results:
  23.         print(result)if __name__ == '__main__':    # search_by_where()    # query_and()    # query_by_not()    answer()
复制代码
关于filter、filter_by接口见02 中的增删查改吧,讲的应该还算详细。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4