欢迎访问宙启技术站
智能推送

Python中的SQLAlchemy.func模块及其实用技巧

发布时间:2023-12-24 08:23:57

SQLAlchemy是一个流行的Python SQL工具箱,提供了多种方法来与数据库交互,包括创建、查询、更新和删除数据。其中的func模块提供了一组函数,用于在SQLAlchemy查询语句中使用SQL函数。下面是func模块的一些常用功能及其使用例子。

1. count():统计查询结果的数量。

from sqlalchemy import func

# 统计Student表的记录数量
query = session.query(func.count(Student.id))
result = query.scalar()  # 返回一个整数
print(result)  # 输出Student表的记录数量

2. sum():计算查询结果的和。

from sqlalchemy import func

# 计算Score表中分数字段的总和
query = session.query(func.sum(Score.score))
result = query.scalar()  # 返回一个浮点数
print(result)  # 输出Score表中分数字段的总和

3. avg():计算查询结果的平均值。

from sqlalchemy import func

# 计算Score表中分数字段的平均值
query = session.query(func.avg(Score.score))
result = query.scalar()  # 返回一个浮点数
print(result)  # 输出Score表中分数字段的平均值

4. min():查询结果的最小值。

from sqlalchemy import func

# 查询Score表中分数字段的最小值
query = session.query(func.min(Score.score))
result = query.scalar()  # 返回一个整数或浮点数
print(result)  # 输出Score表中分数字段的最小值

5. max():查询结果的最大值。

from sqlalchemy import func

# 查询Score表中分数字段的最大值
query = session.query(func.max(Score.score))
result = query.scalar()  # 返回一个整数或浮点数
print(result)  # 输出Score表中分数字段的最大值

6. concat():连接查询结果的字符串。

from sqlalchemy import func

# 连接Student表的first_name和last_name字段
query = session.query(func.concat(Student.first_name, ' ', Student.last_name))
result = query.all()  # 返回一个包含字符串的列表
print(result)  # 输出Student表中first_name和last_name字段连接后的字符串列表

7. distinct():查询不重复的结果。

from sqlalchemy import func

# 查询Score表中的不重复学生ID
query = session.query(func.distinct(Score.student_id))
result = query.all()  # 返回一个包含学生ID的列表
print(result)  # 输出Score表中不重复的学生ID列表

8. extract():提取日期或时间部分。

from sqlalchemy import func

# 提取Student表的join_date字段的年份
query = session.query(func.extract('year', Student.join_date))
result = query.all()  # 返回一个包含年份的列表
print(result)  # 输出Student表的join_date字段的年份列表

9. cast():将字段转换为指定类型。

from sqlalchemy import func
from sqlalchemy.types import Integer

# 将Score表的score字段转换为整数类型
query = session.query(func.cast(Score.score, Integer))
result = query.all()  # 返回一个包含整数的列表
print(result)  # 输出Score表的score字段转换为整数类型的列表

10. case():根据条件进行条件判断和赋值操作。

from sqlalchemy import func, case

# 根据Score表的score字段,判断分数等级,小于60分为不及格,60-70分为及格,大于70分为优秀
grade = case([(Score.score < 60, '不及格'), (Score.score < 70, '及格')], else_='优秀')
query = session.query(Score.student_id, grade)
result = query.all()  # 返回一个包含学生ID和分数等级的列表
print(result)  # 输出Score表中学生ID和分数等级的列表

以上是SQLAlchemy.func模块的一些常用功能及其使用例子,通过使用这些函数,可以更方便地进行数据库查询和计算。在实际应用中,可以根据具体需求选择合适的函数,并与其他SQLAlchemy功能进行结合使用,以实现更复杂的数据操作和分析。