我用来将数据从CSV文件导入MySql的下一个Python源代码。 使用的已安装版本为: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)'附近使用
感谢任何提示,线索和/或解决方案!
答案 0 :(得分:0)
假设您正在正确读取csv文件,并且查询中具有相同的参数,请尝试替换此行
cursor.execute(sql, row)
到
cursor.execute(sql, tuple(row))
答案 1 :(得分:0)
感谢您的回答。对于此延迟的回复表示歉意。 同时,该问题已解决。 这与我的CSV文件有关。到底是什么,我还不知道。但是,我可以继续导入。
再次感谢,祝您愉快!
最好的问候, 迪特列夫