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

Python导入CSV至MySQL时触发Incorrect Integer Value错误求助

解决CSV导入数据库时的"Incorrect Integer Value"问题

我一眼就看出问题出在你的SQL语句写法上啦!你现在的代码里,把row[0]和row[1]用双引号括起来了,这就导致数据库接收到的不是你想要的整数值,而是字面量字符串"row[0]"和"row[1]"。而你的a、b字段是整数类型,数据库没法把这些字符串转换成有效的整数,所以就抛出了"Incorrect Integer Value"警告,并且插入了默认的0值。

正确的写法有两种,首推参数化查询(安全又省心):

参数化查询是处理数据库插入的最佳实践,它能自动处理类型转换,还能防止SQL注入攻击:

csv_data = csv.reader(open('ppi.csv'))
for row in csv_data:
    # 用%s作为占位符,参数放在元组里传给execute
    cursor.execute('INSERT INTO ADKnowledgeBase.PPI(a,b) VALUES(%s, %s);', (row[0], row[1]))

如果你一定要用字符串拼接(不推荐,有注入风险):

可以把整数转成字符串直接拼进SQL语句里,注意不要加引号:

csv_data = csv.reader(open('ppi.csv'))
for row in csv_data:
    # 使用f-string拼接变量
    cursor.execute(f'INSERT INTO ADKnowledgeBase.PPI(a,b) VALUES({row[0]}, {row[1]});')

或者用str.format()方法:

csv_data = csv.reader(open('ppi.csv'))
for row in csv_data:
    cursor.execute('INSERT INTO ADKnowledgeBase.PPI(a,b) VALUES({}, {});'.format(row[0], row[1]))

另外补充一点:你原来的file('ppi.csv')写法在Python 3里已经被废弃了,建议改用open('ppi.csv')哦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:40:36