Einführung in die Methode zum Festlegen von SQLAlchemy-Abfragebedingungen in der Python-Programmierung

不言
Freigeben: 2018-10-23 16:47:53
nach vorne
3603 Leute haben es durchsucht
Dieser Artikel bietet Ihnen eine Einführung in die Methode zum Festlegen von SQLAlchemy-Abfragebedingungen in der Python-Programmierung. Ich hoffe, dass er für Freunde hilfreich ist.

Bei der tatsächlichen Programmierung müssen Datenbankdatensätze basierend auf verschiedenen Bedingungen abgefragt werden. SQLAlchemy-Abfragebedingungen werden als Filter bezeichnet. Hier ist eine Liste der am häufigsten verwendeten Filter.

1. Gleichheitsfilter (==)

Gleichheitsfilter wird verwendet, um zu bestimmen, ob eine Spalte einem bestimmten Wert entspricht, und ist der am häufigsten verwendete Filter.

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

2. Ungleiche Filter (!=, <, >, <=, >=)

Bezogen auf gleiche Filter Ist nicht gleich Filter, ungleich Der Filter kann auf verschiedene Formen erweitert werden: ungleich, kleiner als, größer als, kleiner als oder gleich, größer als oder gleich.

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) #大于等于过滤器
Nach dem Login kopieren

3. Fuzzy-Abfrage (wie)

Fuzzy-Abfrage ist geeignet, wenn nur ein Teil des Inhalts der abgefragten Zeichenfolge bekannt ist Platzhalter können Sie verschiedene Ergebnisse abfragen. Platzhalter werden durch das Prozentzeichen % dargestellt.

Angenommen, die Daten in der Tabelle lauten:

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%'))
Nach dem Login kopieren

Hinweis: Fuzzy-Abfragen gelten nur für Abfragezeichenfolgentypen, nicht für numerische Typen.

4. Filter einschließen (in_)

Wenn Sie den Feldinhalt des Datensatzes, den Sie abfragen möchten, genau kennen, ein Feld jedoch mehrere abzufragende Inhalte hat, können Sie kann „Enthält“-Filter verwenden.

#查询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']))
Nach dem Login kopieren

5. Bestimmen Sie, ob es leer ist (ist NULL, ist nicht NULL)

Der Nullwert NULL ist ein spezieller Wert im Datenbankfeld. SQLAlchemy unterstützt die Beurteilung, ob ein Feld leer ist. Bei der Beurteilung können Sie zum Filtern Gleichwert- und Ungleichwertfilter verwenden, oder Sie können zum Filtern „Ist“ und „Ist nicht“ verwenden.

#查询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))
Nach dem Login kopieren

6. Nicht logisch (~)

Sie können nicht logisch verwenden, wenn Sie Datensätze abfragen müssen, die bestimmte Bedingungen nicht erfüllen.

#查询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']))
Nach dem Login kopieren

7. AND-Logik (and_)

Wenn Sie Datensätze abfragen müssen, die mehrere Bedingungen gleichzeitig erfüllen, müssen Sie AND-Logik verwenden. Es gibt drei Möglichkeiten, Logik in SQLAlchemy auszudrücken.

Die Abfrageergebnisse der folgenden drei Anweisungen sind gleich und es handelt sich bei allen um Datensätze mit der 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)
Nach dem Login kopieren

8. Oder-Logik (or_)

Wenn Sie mehrere Bedingungen abfragen müssen, aber nur eine der Bedingungen erfüllt sein muss, müssen Sie oder-Logik verwenden .

#引入或逻辑关键字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))
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonEinführung in die Methode zum Festlegen von SQLAlchemy-Abfragebedingungen in der Python-Programmierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:segmentfault.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage