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

使用Python导入.csv到MySQL时出现参数未使用错误求助

解决方案

1. 占位符使用错误
mysql-connector-python的标准占位符是%s,?是sqlite3等其他数据库驱动的格式,改回正确的占位符:

insert_data = (
    "INSERT INTO company_calculations.bs_import_test(ticker, date_updated, bs_section, yr_0, yr_1, yr_2, yr_3, yr_4, yr_5, yr_6, yr_7, yr_8, yr_9, yr_10, yr_11, yr_12, yr_13, yr_14, yr_15)"
    "VALUES(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)"
)

2. 校验字段与占位符数量匹配
确认INSERT的字段数(19个)和VALUES里的占位符数完全一致,少写或多写都会触发参数不匹配错误。

3. 数据类型适配
检查CSV数据类型与MySQL表字段是否兼容,比如date_updated如果是字符串格式,需要先转换为datetime:

df['date_updated'] = pd.to_datetime(df['date_updated'])

4. 改用批量插入提升效率
逐行插入效率极低,推荐用executemany批量处理:

# 提取目标列并转为元组列表
data_list = [tuple(row) for row in df[['ticker', 'date_updated', 'bs_section', 'yr_0', 'yr_1', 'yr_2', 'yr_3', 'yr_4', 'yr_5', 'yr_6', 'yr_7', 'yr_8', 'yr_9', 'yr_10', 'yr_11', 'yr_12', 'yr_13', 'yr_14', 'yr_15']].values]

mycursor.executemany(insert_data, data_list)
db.commit()

5. 调试技巧
如果仍报错,打印data_inputs的长度,确认参数数量是否为19:

print(len(data_inputs))  # 预期输出19

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 06:21:37