Python编程下SQLAlchemy查询条件设置的方法介绍

如果下载的源码需要作者授权,请更换源码。本站免费分享资源不会增加授权

本篇文章给大家带来的内容是关于Python编程下SQLAlchemy查询条件设置的方法介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

在实际编程中需要根据各种不同的条件查询数据库记录,SQLAlchemy查询条件被称为过滤器。这里列出了最常用的过滤器的使用方法。

1、等值过滤器(==)

等值过滤器用于判断某列是否等于某值,是最常用的过滤器。

session.query(Account).filter(Account.user_name=='Mark') #判断字符串类型 session.query(Account).filter(Account.salary==2000) #判断数值类型

2、不等过滤器(!=、<、>、<=、>=)

与等值过滤器相对的是不等于过滤器,不等于过滤器可以延伸为几种形式:不等于、小于、大于、小于等于、大于等于。

session.query(Account).filter(Account.user_name !="mark" ) #不等于字符串类型 session.query(Account).filter(Account.salary !=2000) #不等于数值类型 session.query(Account).filter(Account.salary >2000) #大于过滤器 session.query(Account).filter(Account.salary <2000) #小于过滤器 session.query(Account).filter(Account.salary <=2000) #小于等于过滤器 session.query(Account).filter(Account.salary >=2000) #大于等于过滤器

3、模糊查询(like)

模糊查询适用于只知道被查询字符串的一部分内容时,通过设置通配符的位置,可以查询出不同的结果。通配符用百分号%表示。

假设表中的数据为:

id user_name title salary
1 David Li System Manager 3000
2 Debeca Li Accountant 3000
3 David Backer Engineer 3000
4 Siemon Bond Enfineer 4000
5 Van Berg General Manager NULL
#查询所有名字包含字母i的用户,结果包括id为1、2、3、4的4条记录 session.query(Account).filter(Account.user_name.like('%i%'))  #查询所有title中以Manager结尾的用户,结果包括id为1、5的两条记录 session.query(Account).filter(Account.title.like('%Manager'))  #查询所有名字中以Da开头的用户,结果包括id为1、3的两条记录 session.query(Account).filter(Account.user_name.like('Da%'))

注意:模糊查询只适用于查询字符串类型,不适用于数值类型。

4、包括过滤器(in_)

当确切的知道要查询记录的字段内容,但是一个字段有多个内容要查询时,可以用包含过滤器。

#查询id不为1,3,5的记录,结果包含id为2,4的两条记录 session.query(Account).filter(~Account.id.in_([1,3,5])) #查询工资不为2000、3000、4000的记录,结果包含id为5的1条记录 session.query(Account).filter(~Account.id.in_([2000,3000,4000])) #查询所有title不为Engineer和Accountant记录,结果包括id为1、5的两条记录 session.query(Account).filter(~Account.title.in_(['Accountant','Engineer']))

5、判断是否为空(is NULL、is not NULL)

空值NULL是数据库字段中比较特殊的值。在SQLAlchemy中支持对字段是否为空进行判断。判断时可以用等值、不等值过滤器筛选,也可以用is、isnot进行筛选。

#查询salary为空值的记录,结果包含id为5的记录 #下面两方式效果相同 session.query(Account).filter(Account.salary==None) session.query(Account).filter(Account,salary.is_(None))  #查询salary不为空值的记录,结果包含id为1、2、3、4的记录 #下面两方式效果相同 session.query(Account).filter(Account.salary!=None) session.query(Account).filter(Account.salary.isnot(None))

6、非逻辑(~)

当需要查询不满足某条件的记录时可以使用非逻辑。

#查询id不为1、3、5的记录,结果包含id为2、4的两条记录 session.query(Account).filter(~Account.id.in_([1,3,5]))  #查询工资不为2000、3000、4000的记录,结果包含id为5的1条记录 session.query(Account).filter(~Account.id.in_([2000,3000,4000]))  #查询所有title不为Engineer和Accountant的记录,结果包括id为1、5的2条记录。 session.query(Account).filter(~Account.title.in(['Accountant','Engineer']))

7、与逻辑(and_)

当需要查询同时满足多个条件的记录时,需要用到与逻辑。在SQLAlchemy中与逻辑可以有3种表达方式。

以下3条语句查询结果相同,都是id为3的记录。

#直接在filter中添加多个条件即表示与逻辑 session.query(Account).filter(Account.title=='Engineer',Account.salary=3000)  #用关机子and_进行逻辑查询 from sqlalchemy import and_ session.query(Account).filter(and_(Account.title=='Engineer',Account.salary=3000))  #通过多个filter的链接表示与逻辑 session.query(Account).filter(Account.title=='Engineer').filter(Account.salary=3000)

8、或逻辑(or_)

当需要查询多个条件但只需其中一个条件满足时,需要用到或逻辑。

#引入或逻辑关键字or_ from sqlalchemy import or_  #查询title是Engineer或者salary为3000的记录,返回结果为id为1、2、3、4的记录 session.query(Account).filter(or_(Account.title=='Engineer',Account.salary=3000))
本文由(壳先生)整理自网络,如转载请注明出处:https://www.mrshell.com;
本站发布的内容若侵犯到您的权益,请邮件联系 i@mrshell.com 删除,我们将及时处理!
===========================================================================

1. 本站大部分下载资源收集于网络,不保证其完整性以及安全性,请下载后自行测试。
2. 本站资源仅供学习和交流使用,版权归资源原作者所有,请在下载后24小时之内自觉删除。
3. 不得使用于非法商业用途,商用请支持正版!不得违反国家法律,否则后果自负!
4. 若作商业用途,请购买正版,由于未及时购买和付费发生的侵权行为,与本站无关。
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!

=================================================================

壳先生 » Python编程下SQLAlchemy查询条件设置的方法介绍

发表评论

提供最优质的资源集合

立即查看 了解详情