You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SQLAlchemy中为整列数值增加指定增量值?

SQLAlchemy 高效批量更新列值的实现

SQLAlchemy完全支持和你原生sqlite3操作等价的高效批量更新,无需逐行迭代,以下是两种常用实现方式:

方式一:基于SQLAlchemy Core

适合直接操作表结构的场景,逻辑和原生SQL最接近:

from sqlalchemy import create_engine, MetaData, Table

amt = 3  # 指定增量值

# 连接数据库
engine = create_engine("sqlite:///funds.db")
# 自动加载现有表结构
metadata = MetaData()
funds_table = Table("funds_table", metadata, autoload_with=engine)

# 执行批量更新
with engine.connect() as conn:
    # 构造UPDATE语句:将funds列的值加上amt
    update_stmt = funds_table.update().values(funds=funds_table.c.funds + amt)
    conn.execute(update_stmt)
    conn.commit()

方式二:基于SQLAlchemy ORM(声明式模型)

如果你使用ORM声明式模型,可通过query.update()实现批量更新:
首先假设你已定义了对应的ORM模型:

from sqlalchemy import Column, Integer
from sqlalchemy.orm import declarative_base

Base = declarative_base()

class Funds(Base):
    __tablename__ = "funds_table"
    id = Column(Integer, primary_key=True)
    funds = Column(Integer)

然后执行更新操作:

from sqlalchemy import create_engine
from sqlalchemy.orm import Session

amt = 3  # 指定增量值

engine = create_engine("sqlite:///funds.db")

with Session(engine) as session:
    # 生成批量UPDATE语句,数据库端一次性完成更新
    session.query(Funds).update({Funds.funds: Funds.funds + amt})
    session.commit()

以上两种方式都会直接生成对应的UPDATE funds_table SET funds=funds+?语句发送给数据库,和你原生sqlite3的操作效率完全一致,无需加载所有行到内存逐行处理。

内容的提问来源于stack exchange,提问作者Justin Chee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 17:57:12