无法使用Python将CSV数据导入MySQL数据库

时间:2019-05-31 13:32:56

标签: python mysql csv import

我用来将数据从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)'附近使用

感谢任何提示,线索和/或解决方案!

2 个答案:

答案 0 :(得分:0)

假设您正在正确读取csv文件,并且查询中具有相同的参数,请尝试替换此行

cursor.execute(sql, row)

cursor.execute(sql, tuple(row))

答案 1 :(得分:0)

感谢您的回答。对于此延迟的回复表示歉意。 同时,该问题已解决。 这与我的CSV文件有关。到底是什么,我还不知道。但是,我可以继续导入。

再次感谢,祝您愉快!

最好的问候, 迪特列夫