我用下一段 Python 源代码将数据从 CSV 文件导入 MySql。 使用的安装版本是:MySql 5.7和Python2.7 此外,该表有 3 列。一个 ID 列(自动递增)和两个文本列:名字和姓氏。
问题似乎出在 SQL 语句周围。特别是“%s”位。
从字面上看,我已经用标点符号完成了所有操作,例如:“,”和“。例如's',“s”,(“s”)等。
我还搜索并使用了各种源代码片段。一切都失败了。甚至我都怀疑我的 CSV 文件的质量。但是,通过例如导入MySql 工作台工作正常。 当我在源代码中添加一些简单的示例值时,我设法在 MySql 中获取数据。所以从技术上来说一切似乎都很好。只是解析失败了......
请帮忙。很可能我忽略了一些简单的事情,但它让我彻底疯狂......
import mysql.connector as mysql
import csv
db = mysql.connect(
host = "xxxx",
user = "xxxx",
passwd = "xxxx",
database = "abc"
)
cursor = db.cursor()
ifile = open('/tmp/import.csv', "rb")
read = csv.reader(ifile)
for row in ifile:
print row
sql = "INSERT INTO Names(Firstname, Lastname) VALUES(%s, %s)"
cursor.execute(sql, row)
db.commit()
print(cursor.rowcount, "record inserted")
我期望发生的是 CSV 中的数据被解析到 MySQL 中。 我收到的错误消息是:
mysql.connector.errors.ProgrammingError: 1064 (42000): 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解在第 1 行“%s, %s, %s)”附近使用的正确语法
感谢您的任何提示、线索和/或解决方案!!
最佳答案
假设您正确读取 csv 文件,并且查询中需要相同的参数,请尝试替换此行
cursor.execute(sql, row)
到
cursor.execute(sql, tuple(row))
关于python - 无法使用Python将CSV数据导入MySQL数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56396102/