>  기사  >  백엔드 개발  >  Python 프로그래밍에서 SQLAlchemy 쿼리 조건을 설정하는 방법 소개

Python 프로그래밍에서 SQLAlchemy 쿼리 조건을 설정하는 방법 소개

不言
不言앞으로
2018-10-23 16:47:533616검색
이 글은 Python 프로그래밍에서 SQLAlchemy 쿼리 조건을 설정하는 방법을 소개합니다. 필요한 친구들이 참고할 수 있기를 바랍니다.

실제 프로그래밍에서는 SQLAlchemy 쿼리 조건을 기반으로 데이터베이스 레코드를 쿼리해야 합니다. 다음은 가장 일반적으로 사용되는 필터 목록입니다.

1. 등가 필터(==)

Equality 필터는 열이 특정 값과 같은지 여부를 확인하는 데 사용됩니다. 가장 일반적으로 사용되는 필터.

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. 퍼지 쿼리(좋아요)

퍼지 쿼리는 쿼리 문자열의 내용 중 일부만 알려진 경우에 적합합니다. 와일드카드 위치를 설정하면 다양한 결과를 쿼리할 수 있습니다. 와일드카드는 백분율 기호 %로 표시됩니다.

테이블의 데이터가 다음과 같다고 가정합니다.

에디토리얼 🎜 🎜 #####시스템 관리자#####3000#### ## #####2#####debeca li#🎜🎜 ## 🎜 🎜#회계사30003데이비드 후원자 엔지니어# 🎜 🎜#시몬 본드# 🎜 🎜 #40005Van Berg총괄 관리자NULL# 🎜 🎜#참고: 퍼지 쿼리는 숫자 유형이 아닌 쿼리 문자열 유형에만 적용됩니다. 4. 포함 필터(in_) 쿼리할 레코드의 필드 내용을 정확히 알고 있지만 하나의 필드에 여러 개가 있는 경우 내용 쿼리 시 포함 필터를 사용할 수 있습니다. 빈 값 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))
조건을 충족하지 않는 레코드를 쿼리해야 하는 경우 비논리적을 사용할 수 있습니다. 특정 조건. 동시에 여러 조건을 충족하는 레코드를 쿼리해야 하는 경우 AND 논리를 사용합니다. SQLAlchemy에는 논리를 표현하는 세 가지 방법이 있습니다.
id user_name
3000 4
Enfineer
#查询所有名字包含字母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%'))
#查询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. 비어 있는지 확인합니다(NULL인지, NULL이 아닌지 확인)
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 논리(and_)

다음 세 문의 쿼리 결과는 동일하며 모두 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))

위 내용은 Python 프로그래밍에서 SQLAlchemy 쿼리 조건을 설정하는 방법 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 segmentfault.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제