📅  最后修改于: 2023-12-03 15:23:19.740000             🧑  作者: Mango
在 SQL 查询中,我们经常需要对多个列进行求和。在 SQLAlchemy 中,我们同样可以轻松实现这一操作。本文将介绍如何在 SQLAlchemy 中对多列进行求和。
在开始之前,请确保您已经了解了 SQLAlchemy 的基本用法,熟悉 SQL 查询语句,以及理解数据库中的表和列的概念。
func.sum()
函数在 SQLAlchemy 中,我们可以使用 func.sum()
函数来对列进行求和。该函数接受一个列作为参数,并返回该列所有值的求和结果。
下面是一个示例代码片段,演示如何对多列进行求和:
from sqlalchemy import create_engine, Column, Integer, func
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
engine = create_engine('mysql+pymysql://user:password@localhost/db')
Session = sessionmaker(bind=engine)
Base = declarative_base()
class Product(Base):
__tablename__ = 'products'
id = Column(Integer, primary_key=True)
price = Column(Integer)
quantity = Column(Integer)
Base.metadata.drop_all(engine)
Base.metadata.create_all(engine)
session = Session()
session.add_all([
Product(price=10, quantity=2),
Product(price=20, quantity=1),
Product(price=30, quantity=3),
])
session.commit()
result = session.query(
func.sum(Product.price).label('total_price'),
func.sum(Product.quantity).label('total_quantity')
).first()
print(result.total_price) # 60
print(result.total_quantity) # 6
在这个例子中,我们定义了一个名为 Product
的模型类,并使用 func.sum()
函数对 price
和 quantity
列进行求和。我们将求和结果分别存储在 total_price
和 total_quantity
列中,并通过 label()
方法为它们取别名。
当我们调用 first()
方法时,会执行 SQL 查询语句并返回结果。我们可以使用 .
运算符访问结果集中的求和结果,并打印它们的值。
在 SQLAlchemy 中,使用 func.sum()
函数对多列进行求和非常简单。我们只需要将要求和的列作为参数传递给该函数,并为它们取别名,然后就可以轻松获取求和结果了。