📜  在 SQLAlchemy 中对多列求和(1)

📅  最后修改于: 2023-12-03 15:23:19.740000             🧑  作者: Mango

在 SQLAlchemy 中对多列求和

在 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() 函数对 pricequantity 列进行求和。我们将求和结果分别存储在 total_pricetotal_quantity 列中,并通过 label() 方法为它们取别名。

当我们调用 first() 方法时,会执行 SQL 查询语句并返回结果。我们可以使用 . 运算符访问结果集中的求和结果,并打印它们的值。

结论

在 SQLAlchemy 中,使用 func.sum() 函数对多列进行求和非常简单。我们只需要将要求和的列作为参数传递给该函数,并为它们取别名,然后就可以轻松获取求和结果了。