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) #判断数值类型
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) #大于等于过滤器
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%'))
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']))
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))
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']))
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)
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))
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!