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

Python读取CSV插入MySQL报错1054(未知字段Shahran)求助

错误原因
  • CSV读取配置错误:你给csv.reader设置的分隔符为\n,导致每行数据会被识别为单个完整字符串,不会按逗号拆分成对应各个字段的列表,最终传入SQL的是整行未拆分的字符串内容。
  • SQL拼接逻辑错误:直接将字段值拼接到SQL语句中,字符串类型的值Shahran没有被引号包裹,MySQL会将其识别为列名而非待插入的字段值,直接触发1054报错。同时这种字符串拼接SQL的写法存在SQL注入风险,属于不规范的数据库操作写法。
修复方案

修正后的代码如下:

import csv

# 此处保留你原本初始化数据库连接、创建cursor的逻辑不变
with open('housePrice.csv','r', encoding='utf-8') as f:
    # 使用csv.reader默认的逗号分隔符,自动拆分每行的各个字段
    data = csv.reader(f)
    for row in data:
        # 使用参数化查询,占位符用%s,字段列表作为execute的第二个参数传入
        cursor.execute(
            'insert into testineuron.houseprice values(%s, %s, %s, %s, %s, %s, %s, %s)',
            row
        )
    mydb.commit()

如果你的表字段顺序和CSV列的顺序不一致,可以在插入语句中明确指定字段名,写法更稳妥:

insert into testineuron.houseprice(字段1名, 字段2名, 字段3名, ..., 字段8名) values(%s, %s, %s, %s, %s, %s, %s, %s)

参数化查询会由数据库驱动自动处理不同类型值的格式适配:字符串会自动加引号,数值、布尔值也会自动匹配对应字段的类型要求,从根源上避免本次报错以及SQL注入的安全问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 11:06:02