摘要:上一篇文章第節入門下一篇文章第節關系操作在實際編程中需要根據各種不同的條件查詢數據庫記錄,查詢條件被稱為過濾器。通配符用百分號表示。以下條語句查詢結果相同,都是為的記錄。引入或邏輯關鍵字查詢是或者為的記錄,返回結果為為的記錄
上一篇文章:Python-SQLAlchemy:第1節:SQLAlchemy入門
下一篇文章:Python-SQLAlchemy:第3節:關系操作
在實際編程中需要根據各種不同的條件查詢數據庫記錄,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))
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/44829.html
摘要:本節圍繞在中如何定義關系及如何使用關系進行查詢進行講解,使讀者能夠快速掌握的關系操作。班級與學生為一對多關系,班級與老師之間為多對多關系。三年二班多對多關系的使用通過關聯模型實現,在其中分別設置模型和的外鍵,并且在父模型中設置相應的實現。 上一篇文章:Python-SQLAlchemy:第2節:查詢條件設置下一篇文章:Python-SQLAlchemy:第4節:級聯 關系數據庫是建立...
摘要:下一篇文章第節查詢條件設置是編程語言下的一款開源軟件。提供了工具包及對象關系映射工具,使用許可證發行。在關閉連接時會自動進行事務提交操作。引入多條件查詢時使用。由于上下文函數退出時會自動提交事務,所以無需顯示的調用使新增生效。 下一篇文章:Python-SQLAlchemy:第2節:查詢條件設置 SQLAlchemy是Python編程語言下的一款開源軟件。提供了SQL工具包及對象關系...
摘要:上一篇文章第節關系操作級聯是在一對多關系中父表與子表進行聯動操作的數據庫術語。注意級聯獨立于本身針對外鍵的級聯定義。代碼執行后數據庫表中的內容的變化表五年二班理想路號樓表理想男靜安區女靜安區小馬哥女閘口區張三韓永躍男靜安區 上一篇文章:Python-SQLAlchemy:第3節:關系操作 級聯是在一對多關系中父表與子表進行聯動操作的數據庫術語。因為父表與子表通過外鍵關聯,所以對父表或...
摘要:因為是工作在一個內部,有時候我們可能不小心做了一些誤刪除的操作,可以回滾。我們先修改的用戶名為,然后重新添加一個新,但是記住這個時候我們還沒有。集合類型可以是各種合法類型,比如,但是默認集合是一個。 官方文檔 Initialization # 檢查是否已經安裝以及版本號 >>> import sqlalchemy >>> sqlalchemy.__version__ ’1.1.4‘ ...
閱讀 2762·2021-11-22 13:54
閱讀 2697·2021-10-14 09:42
閱讀 4038·2021-09-28 09:47
閱讀 2171·2021-09-03 10:28
閱讀 1215·2021-07-26 23:38
閱讀 2566·2019-08-30 15:54
閱讀 2645·2019-08-29 16:35
閱讀 1436·2019-08-29 15:42