我按照此处和此处提出的建议将记录插入到 MySQL 表中,但“并非所有在字符串格式化期间转换的参数”错误仍然存在。
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 的回答(第二个链接)中注意到他的元组列表('purchases')在最后一个括号之前有一个逗号。我的元组列表没有这个尾随逗号。如果最后一个逗号是必要的,那么最好的方法是什么?
提前致谢!
运行 Python 3.6.4/Windows 10