Home | 简体中文 | 繁体中文 | 杂文 | Github | 知乎专栏 | 51CTO学院 | CSDN程序员研修院 | OSChina 博客 | 腾讯云社区 | 阿里云栖社区 | Facebook | Linkedin | Youtube | 打赏(Donations) | About
知乎专栏多维度架构

9.7. 查询

打印SQL

		
        query = session.query(PictureLike).filter(
            PictureLike.android_id == android_id,
            PictureLike.picture_id == picture_id,
        )
        print(f"SQL: {query}")		
		
		

所有数据

		
results = session.query(Player).all()
for result in results:
    print(f"查询结果为: {result}")		
		
		

第一条数据

		
first = session.query(Player).first()
print(first)		
		
		

LIKE

		
query_result = session.query(Player).filter(Player.name.like("%sa%"))		
		
		

与操作符 and

		
query_result = session.query.filter(and_(Player.name == 'Salah', Player.id > 1))		
# 单个filter()中设置多个表达式
query_result = session.query.filter(Player.name == 'Salah', Player.id > 1)

# 使用多个filter()
query_result = session.query.filter(Player.name == 'Salah').filter(Player.id > 1)
		
		

或操作符 or

		
from sqlalchemy import or_
		
results = session.query.filter(or_(Player.name == 'Salah', Player.id > 1))		
		
		

IN 包含

		
query_result = session.query.filter(Player.club.in_(["Liverpool", "Chelsea"]))		
		
		

NOT IN 排除

		
query_result = session.query.filter(~Player.country.in_(["Eygpt", "China"]))		
		
		

slice 切片操作,返回 list

		
slice(起始值,结束值)

results = session.query(Arctire).slice(90,100).all()
print(results)

我们也可以使用如下方法,获得同样的结果。
results = session.query(Arctire)[90:100]
		
		

其他操作

		
avg:求平均值。
max:求最大值。
min:求最小值。
sum:求和。