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

使用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方法获取 的结果值。