Python MYSQL - 插入不同的值

时间:2017-11-01 16:05:28

标签: python mysql python-3.x insert distinct-values

我有一个带有简单id和name列的数据库表,以及一个带有一些虚拟名称的csv文件,其中一些是重复的。我试图只读取唯一值。

def readCsv(fileName):
#open connection
reader = csv.DictReader(open(fileName, encoding="utf8"))
connection = pyodbc.connect(
    'DRIVER=' + DRIVER + ';PORT=1433;SERVER=' + SERVER + ';PORT=1433;DATABASE=' + DATABASE + ';UID=' + USERNAME + ';PWD=' + PASSWORD)
cursor = connection.cursor()

#Reading of the file
counter = 0
#Iterate line by line
for line in reader:
    insertSql = "INSERT INTO Dummy VALUES(?)"
    result = cursor.execute(insertSql,
                            line['name'])
    cursor.commit()
    counter+= 1

这正确输入了数据库中的所有名称,但我有一些我不想要的重复名称。 我已经尝试过使用INSERT IGNORE,但是这会以某种方式返回INTO不正确的错误?

insertSql = "INSERT IGNORE INTO Dummy VALUES(?)"
  

pyodbc.ProgrammingError:('42000',“[42000] [Microsoft] [SQL Server的ODBC驱动程序13] [SQL Server]关键字'INTO'附近的语法不正确。(156)(SQLExecDirectW)”)

我使用ON DUPLICATE得到了类似的结果,它只是说现在ON无效。

insertSql = "INSERT INTO Dummy VALUES(?) ON DUPLICATE KEY UPDATE name=name"
  

pyodbc.ProgrammingError:('42000',“[42000] [Microsoft] [SQL Server的ODBC驱动程序13] [SQL Server]关键字'ON'附近的语法不正确。(156)(SQLExecDirectW)”)

我认为其中一个应该可行,但我不知道我在这里做错了什么?

0 个答案:

没有答案