使用SQLAlchemy.sql.func查询 值的方法
发布时间:2023-12-19 01:58:18
使用SQLAlchemy.sql.func函数可以执行SQLAlchemy中的聚合函数和其他SQL函数。
以下是一些常用的func函数及其用法:
1. count函数:用于计算某一列的行数。
from sqlalchemy.sql import func
from sqlalchemy import select
stmt = select(func.count(User.id))
result = session.execute(stmt).scalar()
print(f"Total users: {result}")
2. sum函数:用于计算某一列的和。
from sqlalchemy.sql import func
from sqlalchemy import select
stmt = select(func.sum(User.age))
result = session.execute(stmt).scalar()
print(f"Total age: {result}")
3. avg函数:用于计算某一列的平均值。
from sqlalchemy.sql import func
from sqlalchemy import select
stmt = select(func.avg(User.salary))
result = session.execute(stmt).scalar()
print(f"Average salary: {result}")
4. max函数:用于获取某一列的最大值。
from sqlalchemy.sql import func
from sqlalchemy import select
stmt = select(func.max(User.salary))
result = session.execute(stmt).scalar()
print(f"Max salary: {result}")
5. min函数:用于获取某一列的最小值。
from sqlalchemy.sql import func
from sqlalchemy import select
stmt = select(func.min(User.salary))
result = session.execute(stmt).scalar()
print(f"Min salary: {result}")
以下是一个完整的使用例子:
from sqlalchemy.sql import func
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String)
age = Column(Integer)
salary = Column(Integer)
engine = create_engine('sqlite:///test.db')
Base.metadata.create_all(engine)
Session = sessionmaker(bind=engine)
session = Session()
# 插入测试数据
users = [
User(name='Alice', age=25, salary=50000),
User(name='Bob', age=30, salary=60000),
User(name='Charlie', age=35, salary=70000),
User(name='David', age=40, salary=80000)
]
session.add_all(users)
session.commit()
# 查询 值
stmt = select(func.count(User.id))
result = session.execute(stmt).scalar()
print(f"Total users: {result}")
stmt = select(func.sum(User.age))
result = session.execute(stmt).scalar()
print(f"Total age: {result}")
stmt = select(func.avg(User.salary))
result = session.execute(stmt).scalar()
print(f"Average salary: {result}")
stmt = select(func.max(User.salary))
result = session.execute(stmt).scalar()
print(f"Max salary: {result}")
stmt = select(func.min(User.salary))
result = session.execute(stmt).scalar()
print(f"Min salary: {result}")
以上是使用func函数查询 值的方法及示例。请注意,在使用func函数时,需要结合select语句和session.execute方法来执行查询,并通过scalar方法获取 的结果值。
