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

使用SQLAlchemy向MySQL插入数据时遇ArgumentError错误求助

解决SQLAlchemy插入数据时的ArgumentError错误

问题原因

你用db.execute()方法传入了列表格式的rows参数,但execute()仅支持单个元组或字典作为参数;批量插入多行数据需要使用executemany()方法,这才是适配列表参数的正确方式。

修复方案

将代码中的execute替换为executemany,修改后的代码如下:

def insert_data(db, table, rows):
    db.executemany(f"INSERT INTO {table} VALUES (%s)", rows)
    db.commit()

补充说明

  • 若仅插入单行数据,也可以直接传入元组而非列表(比如把rows=[(1, 'asdsewadada', 'lajsdljasld', 'lol@gmail.com', 51)]改为rows=(1, 'asdsewadada', 'lajsdljasld', 'lol@gmail.com', 51)),但executemany()更通用,同时支持单行、多行插入场景。
  • 注意:直接拼接表名存在SQL注入风险,建议用SQLAlchemy的text对象包裹SQL语句提升安全性:
from sqlalchemy import text

def insert_data(db, table, rows):
    db.execute(text(f"INSERT INTO {table} VALUES (%s)"), rows)
    db.commit()

或者使用ORM的insert构造器,完全规避字符串拼接风险:

from sqlalchemy import insert

def insert_data(db, table_model, rows):
    db.execute(insert(table_model), rows)
    db.commit()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 14:55:19