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

Python中编写重复SQL INSERT语句的更优实现方法

解决方案

你可以把可变的表名单独抽成列表,通过循环批量生成SQL语句并执行,完全不用逐行写重复代码,参考实现如下:

import pymysql

# 数据库连接配置(替换为你自己的实际参数)
db_config = {
    "host": "127.0.0.1",
    "user": "your_username",
    "password": "your_password",
    "database": "your_db",
    "charset": "utf8mb4"
}

# 1. 定义所有需要插入的目标表名
target_tables = ["table_a", "table_b", "table_c", "table_d", "table_e", 
                 "table_f", "table_g", "table_h", "table_i", "table_j",
                 "table_k", "table_l", "table_m"]
# 2. 固定的字段和源表,抽成变量方便后续统一修改
insert_cols = "col1,col2,col3"
source_table = "temp"

# 3. 连接数据库批量执行
conn = pymysql.connect(**db_config)
try:
    with conn.cursor() as cursor:
        for table in target_tables:
            # 动态生成SQL语句
            sql = f"INSERT INTO {table} ({insert_cols}) SELECT {insert_cols} FROM {source_table};"
            cursor.execute(sql)
    # 全部执行成功再提交事务
    conn.commit()
    print("所有表数据插入成功")
except Exception as e:
    # 执行失败回滚,保证数据一致性
    conn.rollback()
    print(f"执行出错,已回滚:{e}")
finally:
    conn.close()

可根据实际场景调整的细节:

  • 如果你用的是其他数据库驱动(比如PostgreSQL的psycopg2、SQLAlchemy等),只需要修改数据库连接和执行的对应逻辑,动态生成SQL的逻辑完全通用
  • 如果后续需要调整字段、源表,只需要修改insert_cols和source_table变量即可,不用挨个修改所有SQL
  • 示例默认加了事务控制,只要有一张表插入失败就会全部回滚,避免数据不一致,如果不需要事务可以自行去掉相关逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 06:24:03