摘要:上一篇文章第節(jié)入門下一篇文章第節(jié)關(guān)系操作在實際編程中需要根據(jù)各種不同的條件查詢數(shù)據(jù)庫記錄,查詢條件被稱為過濾器。通配符用百分號表示。以下條語句查詢結(jié)果相同,都是為的記錄。引入或邏輯關(guān)鍵字查詢是或者為的記錄,返回結(jié)果為為的記錄
上一篇文章:Python-SQLAlchemy:第1節(jié):SQLAlchemy入門
下一篇文章:Python-SQLAlchemy:第3節(jié):關(guān)系操作
在實際編程中需要根據(jù)各種不同的條件查詢數(shù)據(jù)庫記錄,SQLAlchemy查詢條件被稱為過濾器。這里列出了最常用的過濾器的使用方法。
1、等值過濾器(==)等值過濾器用于判斷某列是否等于某值,是最常用的過濾器。
session.query(Account).filter(Account.user_name=="Mark") #判斷字符串類型 session.query(Account).filter(Account.salary==2000) #判斷數(shù)值類型2、不等過濾器(!=、<、>、<=、>=)
與等值過濾器相對的是不等于過濾器,不等于過濾器可以延伸為幾種形式:不等于、小于、大于、小于等于、大于等于。
session.query(Account).filter(Account.user_name !="mark" ) #不等于字符串類型 session.query(Account).filter(Account.salary !=2000) #不等于數(shù)值類型 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)
模糊查詢適用于只知道被查詢字符串的一部分內(nèi)容時,通過設(shè)置通配符的位置,可以查詢出不同的結(jié)果。通配符用百分號%表示。
假設(shè)表中的數(shù)據(jù)為:
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的用戶,結(jié)果包括id為1、2、3、4的4條記錄 session.query(Account).filter(Account.user_name.like("%i%")) #查詢所有title中以Manager結(jié)尾的用戶,結(jié)果包括id為1、5的兩條記錄 session.query(Account).filter(Account.title.like("%Manager")) #查詢所有名字中以Da開頭的用戶,結(jié)果包括id為1、3的兩條記錄 session.query(Account).filter(Account.user_name.like("Da%"))
注意:模糊查詢只適用于查詢字符串類型,不適用于數(shù)值類型。4、包括過濾器(in_)
當確切的知道要查詢記錄的字段內(nèi)容,但是一個字段有多個內(nèi)容要查詢時,可以用包含過濾器。
#查詢id不為1,3,5的記錄,結(jié)果包含id為2,4的兩條記錄 session.query(Account).filter(~Account.id.in_([1,3,5])) #查詢工資不為2000、3000、4000的記錄,結(jié)果包含id為5的1條記錄 session.query(Account).filter(~Account.id.in_([2000,3000,4000])) #查詢所有title不為Engineer和Accountant記錄,結(jié)果包括id為1、5的兩條記錄 session.query(Account).filter(~Account.title.in_(["Accountant","Engineer"]))5、判斷是否為空(is NULL、is not NULL)
空值NULL是數(shù)據(jù)庫字段中比較特殊的值。在SQLAlchemy中支持對字段是否為空進行判斷。判斷時可以用等值、不等值過濾器篩選,也可以用is、isnot進行篩選。
#查詢salary為空值的記錄,結(jié)果包含id為5的記錄 #下面兩方式效果相同 session.query(Account).filter(Account.salary==None) session.query(Account).filter(Account,salary.is_(None)) #查詢salary不為空值的記錄,結(jié)果包含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的記錄,結(jié)果包含id為2、4的兩條記錄 session.query(Account).filter(~Account.id.in_([1,3,5])) #查詢工資不為2000、3000、4000的記錄,結(jié)果包含id為5的1條記錄 session.query(Account).filter(~Account.id.in_([2000,3000,4000])) #查詢所有title不為Engineer和Accountant的記錄,結(jié)果包括id為1、5的2條記錄。 session.query(Account).filter(~Account.title.in(["Accountant","Engineer"]))7、與邏輯(and_)
當需要查詢同時滿足多個條件的記錄時,需要用到與邏輯。在SQLAlchemy中與邏輯可以有3種表達方式。
以下3條語句查詢結(jié)果相同,都是id為3的記錄。
#直接在filter中添加多個條件即表示與邏輯 session.query(Account).filter(Account.title=="Engineer",Account.salary=3000) #用關(guān)機子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_)
當需要查詢多個條件但只需其中一個條件滿足時,需要用到或邏輯。
#引入或邏輯關(guān)鍵字or_ from sqlalchemy import or_ #查詢title是Engineer或者salary為3000的記錄,返回結(jié)果為id為1、2、3、4的記錄 session.query(Account).filter(or_(Account.title=="Engineer",Account.salary=3000))
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/44829.html
摘要:本節(jié)圍繞在中如何定義關(guān)系及如何使用關(guān)系進行查詢進行講解,使讀者能夠快速掌握的關(guān)系操作。班級與學生為一對多關(guān)系,班級與老師之間為多對多關(guān)系。三年二班多對多關(guān)系的使用通過關(guān)聯(lián)模型實現(xiàn),在其中分別設(shè)置模型和的外鍵,并且在父模型中設(shè)置相應的實現(xiàn)。 上一篇文章:Python-SQLAlchemy:第2節(jié):查詢條件設(shè)置下一篇文章:Python-SQLAlchemy:第4節(jié):級聯(lián) 關(guān)系數(shù)據(jù)庫是建立...
摘要:下一篇文章第節(jié)查詢條件設(shè)置是編程語言下的一款開源軟件。提供了工具包及對象關(guān)系映射工具,使用許可證發(fā)行。在關(guān)閉連接時會自動進行事務提交操作。引入多條件查詢時使用。由于上下文函數(shù)退出時會自動提交事務,所以無需顯示的調(diào)用使新增生效。 下一篇文章:Python-SQLAlchemy:第2節(jié):查詢條件設(shè)置 SQLAlchemy是Python編程語言下的一款開源軟件。提供了SQL工具包及對象關(guān)系...
摘要:上一篇文章第節(jié)關(guān)系操作級聯(lián)是在一對多關(guān)系中父表與子表進行聯(lián)動操作的數(shù)據(jù)庫術(shù)語。注意級聯(lián)獨立于本身針對外鍵的級聯(lián)定義。代碼執(zhí)行后數(shù)據(jù)庫表中的內(nèi)容的變化表五年二班理想路號樓表理想男靜安區(qū)女靜安區(qū)小馬哥女閘口區(qū)張三韓永躍男靜安區(qū) 上一篇文章:Python-SQLAlchemy:第3節(jié):關(guān)系操作 級聯(lián)是在一對多關(guān)系中父表與子表進行聯(lián)動操作的數(shù)據(jù)庫術(shù)語。因為父表與子表通過外鍵關(guān)聯(lián),所以對父表或...
摘要:因為是工作在一個內(nèi)部,有時候我們可能不小心做了一些誤刪除的操作,可以回滾。我們先修改的用戶名為,然后重新添加一個新,但是記住這個時候我們還沒有。集合類型可以是各種合法類型,比如,但是默認集合是一個。 官方文檔 Initialization # 檢查是否已經(jīng)安裝以及版本號 >>> import sqlalchemy >>> sqlalchemy.__version__ ’1.1.4‘ ...
閱讀 2751·2021-11-22 13:54
閱讀 2688·2021-10-14 09:42
閱讀 3987·2021-09-28 09:47
閱讀 2162·2021-09-03 10:28
閱讀 1203·2021-07-26 23:38
閱讀 2557·2019-08-30 15:54
閱讀 2639·2019-08-29 16:35
閱讀 1426·2019-08-29 15:42