gpt4 book ai didi

python - 通过Python CSV到SQL : passing multiple arguments

转载 作者:行者123 更新时间:2023-11-29 11:10:22 25 4
gpt4 key购买 nike

我是 python 初学者,我正在尝试解析 CSV 文件并将其内容添加到数据库中。

我当前的代码:

with open('fruit.csv', 'rb') as f:
reader = csv.reader(f, delimiter='\t', quoting=csv.QUOTE_NONE)
for row in reader:
sql = "INSERT INTO fruit(ID,NAME,COLOUR,SIZE) VALUES(?, ?, ?, ?)"
try:
cursor.execute(sql, [ row[0], row[1], row[2], row[3] ] )
db.commit()
print('done')
except csv.Error as e:
print('error: ' + e)
db.rollback()

我当前的错误:

Traceback (most recent call last):
File "mysqltest.py", line 23, in <module>
cursor.execute(sql, (row[0], row[1], row[2], row[3]))
File "C:\Python27\lib\site-packages\MySQLdb\cursors.py", line 187, in execute
query = query % tuple([db.literal(item) for item in args])
TypeError: not all arguments converted during string formatting

我在 SE 上阅读了许多其他问题的答案,但我仍然无法理解如何将一行中的多个值作为单独的值传递给 SQL 字符串。

不确定是否相关,但这是我要写入的表的结构:

TABLE FRUIT (
ID int primary key NOT NULL,
NAME CHAR(20) NOT NULL,
COLOUR CHAR(20),
SIZE CHAR(20))

如果有人能解释我做错了什么,我将不胜感激!

最佳答案

在大多数 Python API 模块中,MySQL 使用 %s 运算符,而不是 ?

sql = "INSERT INTO fruit(ID, NAME, COLOUR, SIZE) VALUES(%s, %s, %s, %s)"
try:
cursor.execute(sql, [row[0], row[1], row[2], row[3]])

关于python - 通过Python CSV到SQL : passing multiple arguments,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40684392/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com