📜  如何在 SQLAchemy 中按列分数从表中选择最小值和最大值?(1)

📅  最后修改于: 2023-12-03 14:52:34.951000             🧑  作者: Mango

在SQLAlchemy中按列分数从表中选择最小值和最大值

在SQLAlchemy中,可以使用查询(query)和聚合函数(aggregate functions)来从表中选择最小值和最大值。

查询表

要从表中选择最小值和最大值,首先需要查询表。

from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base

engine = create_engine('sqlite:///:memory:')
Base = declarative_base()

class Person(Base):
    __tablename__ = 'person'
    
    id = Column(Integer, primary_key=True)
    name = Column(String)
    age = Column(Integer)

Base.metadata.create_all(engine)

Session = sessionmaker(bind=engine)
session = Session()

person1 = Person(name='Alice', age=25)
person2 = Person(name='Bob', age=30)
person3 = Person(name='Charlie', age=35)

session.add_all([person1, person2, person3])
session.commit()

result_set = session.query(Person).all()

上面的代码创建了一个Person类和一个表,将一些人添加到表中,并查询表。

选择最小值和最大值

要从表中选择最小值和最大值,请使用 SQLAlchemy的 min和max聚合函数。

from sqlalchemy import func

# 最小年龄
min_age = session.query(func.min(Person.age)).one()[0]
print(min_age)

# 最大年龄
max_age = session.query(func.max(Person.age)).one()[0]
print(max_age)

在上面的代码中,我们调用了min和max函数来选择年龄的最小值和最大值。

返回Markdown格式的代码片段
# 查询表
result_set = session.query(Person).all()

# 最小年龄
min_age = session.query(func.min(Person.age)).one()[0]

# 最大年龄
max_age = session.query(func.max(Person.age)).one()[0]

print(f"最小年龄: {min_age}")
print(f"最大年龄: {max_age}")

以上是按列分数从表中选择最小值和最大值的完整程序。注意,需要根据实际情况修改数据库的连接信息。