在字符串格式化过程中并非所有参数都被转换(使用"问号" Python中的占位符cursor.execute)

时间:2018-05-08 21:07:57

标签: python mysql-python placeholder insert-into executemany

我按照herehere的建议将记录插入到MySQL表中,但是"并非所有参数都在字符串格式化过程中转换而且#34;错误仍然存​​在。

import csv
import MySQLdb

//snip// # MySQL server login code

MyCSV = open('file.csv')
csv_data = csv.reader(MyCSV)

records = []
for row in csv_data:
    if "Request_Date" in row:
        # skip header row (field 1 header = 'Request_Date')
        continue
    else:
        records.append(tuple(row))

cursor.executemany('INSERT INTO SchemaName.TableName VALUES 
(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)', records)

MyDB.commit()
cursor.close()
MyDB.close()

每个元组都记录了'包含15个元素,其中一些是空白的。

print(records [:2])生成......

[('MM/DD/YYYY', 'first last', 'a-b/c', 'abcde-f', '', '', 'No', '', '', '', '', '', '', 'category-a', ''), ('MM/DD/YYYY', 'first last', 'e-f/g', 'abcde-f', '', '', 'No', '', '', '', '', '', '', 'category-b', '')]

以下是' cursor.executemany'行运行:

  File "C:\Users\mburnett\AppData\Local\Programs\Python\Python36-32\lib\site-packages\MySQLdb\cursors.py", line 238, in execute
    query = query % args TypeError: not all arguments converted during string formatting

在处理上述异常期间,发生了另一个异常:

<<< ...>>>

  File "C:\Users\mburnett\AppData\Local\Programs\Python\Python36-32\lib\site-packages\MySQLdb\connections.py", line 52, in defaulterrorhandler
    raise errorclass(errorvalue)
_mysql_exceptions.ProgrammingError: not all arguments converted during string formatting

我注意到在Kashyap的回答(第二个链接)中,他的元组列表(' purchase')在最后一个括号之前有一个逗号。我的元组列表没有这个尾随逗号。如果最后一个逗号是必要的,那么最好的方法是什么?

提前致谢!

运行Python 3.6.4 / Windows 10

0 个答案:

没有答案