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

如何用SQLAlchemy执行批量插入?附元组列表示例

SQLAlchemy批量插入记录的实现方法

完全可以通过conn.execute()实现批量插入元组列表的操作,以下是具体实现要点:

1. 构造正确的INSERT语句

根据你的表结构,有两种常用方式构造插入语句:

  • 文本SQL方式(适合快速编写):
    假设你的表名为your_table,字段依次为id、code、value,则:
    from sqlalchemy import text
    
    insert_query = text("INSERT INTO your_table (id, code, value) VALUES (:id, :code, :value)")
    
  • SQLAlchemy Core表对象方式(更安全,兼容ORM):
    先定义表结构,再生成插入语句:
    from sqlalchemy import Table, Column, Integer, String, MetaData
    
    metadata = MetaData()
    your_table = Table(
        "your_table",
        metadata,
        Column("id", Integer),
        Column("code", String),
        Column("value", Integer)
    )
    insert_query = your_table.insert()
    

2. 批量插入的调用方式

SQLAlchemy 1.4+版本(当前主流版本)的execute()方法直接支持批量传入元组列表:

# 你的待插入数据
row_chunk = [(1001, '1bz', 120), (1002, '7zmk', 150), (1003, '8wqt', 170), (1005, '1qpo', 1100), (1006, '5qop', 4400), (1006, '5qop', 4400), (1007, '22mn', 227), (1008, 'ASDC01', 2000), (1001, None, None), (1010, None, None), (1008, 'ASDC01', 2000), (1002, None, None)]

# 执行批量插入
conn.execute(insert_query, row_chunk)
# 提交事务(如果不是自动提交模式)
conn.commit()

注意:若使用SQLAlchemy 1.4之前的旧版本,需改用conn.executemany(insert_query, row_chunk)来实现批量操作。

3. 处理特殊数据场景

你的数据包含重复记录和NULL值,需注意:

  • NULL值会被直接插入到对应字段,只要表字段允许为NULL即可;
  • 若表有唯一约束(比如id是主键),重复记录会触发报错,可通过添加冲突处理语句解决:
    • MySQL:在INSERT语句末尾添加ON DUPLICATE KEY UPDATE value = VALUES(value)(按需更新字段)
    • PostgreSQL:添加ON CONFLICT (id) DO NOTHING(忽略重复)或ON CONFLICT (id) DO UPDATE SET value = EXCLUDED.value(更新重复记录)

内容的提问来源于stack exchange,提问作者Shaheer Shah

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 13:27:37