Maison > Article > développement back-end > Introduction à la méthode de définition des conditions de requête SQLAlchemy sous programmation Python
Dans la programmation réelle, les enregistrements de base de données doivent être interrogés en fonction de diverses conditions de requête SQLAlchemy sont appelées filtres. Voici une liste des filtres les plus couramment utilisés.
1. Filtre d'égalité (==)
Le filtre d'égalité est utilisé pour déterminer si une colonne est égale à une certaine valeur et est le filtre le plus couramment utilisé.
session.query(Account).filter(Account.user_name=='Mark') #判断字符串类型 session.query(Account).filter(Account.salary==2000) #判断数值类型
2. Filtres inégaux (!=, <, >, <=, >=)
et filtres égaux Le contraire est le filtre d'inégalité, qui peut être étendu à plusieurs formes : non égal à, inférieur à, supérieur à, inférieur ou égal à, supérieur ou égal à.
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. Requête floue (comme)
La requête floue convient lorsque seule une partie du contenu de la chaîne de requête est connue en définissant la position. du caractère générique, vous pouvez La requête donne des résultats différents. Les caractères génériques sont représentés par le signe de pourcentage %.
Supposons que les données du tableau sont :
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%'))
Remarque : la requête floue s'applique uniquement aux types de chaîne de requête, pas aux types numériques.
4. Inclure le filtre (in_)
Lorsque vous connaissez exactement le contenu du champ de l'enregistrement que vous souhaitez interroger, mais qu'un champ a plusieurs contenus à interroger, vous peut utiliser des filtres Contient.
#查询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. Déterminez s'il est vide (est NULL, n'est pas NULL)
La valeur nulle NULL est une valeur spéciale dans les champs de la base de données. SQLAlchemy permet de déterminer si un champ est vide. Lors du jugement, vous pouvez utiliser des filtres à valeurs égales et inégales pour filtrer, ou vous pouvez utiliser est et n'est pas pour filtrer.
#查询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. Non logique (~)
Vous pouvez utiliser non logique lorsque vous devez interroger des enregistrements qui ne remplissent pas certaines conditions.
#查询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. Logique ET (et_)
Lorsque vous devez interroger des enregistrements qui remplissent plusieurs conditions en même temps, vous devez utiliser la logique ET. Il existe trois façons d'exprimer la logique dans SQLAlchemy.
Les résultats de requête des trois instructions suivantes sont les mêmes et ce sont tous des enregistrements avec l'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. Ou logique (or_)
Lorsque plusieurs conditions doivent être interrogées mais qu'une seule des conditions doit être remplie, la logique OU doit être utilisé.
#引入或逻辑关键字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))
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!