MySQLdb TypeError: not all arguments converted

MySQLdb TypeError: not all arguments converted

我已经阅读了相同错误的其他条目,并尝试了他们的解决方案,但我的代码没有成功。

columns = ['city', 'state', 'zip', 'latitude', 'longitude']
placeholder = '?'
statement = """LOAD DATA LOCAL INFILE '/Path/To/My/File""" + table_name + """.csv'
INTO TABLE propertyData.property_""" + table_name + """
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES ({})""".format(', '.join(placeholder*len(columns)))
statement = statement % tuple(columns)

Traceback (most recent call last):
File "importer.py", line 59, in <module>
import_db("site")
File "importer.py", line 46, in import_db
print statement % tuple_cols
TypeError: not all arguments converted during string formatting

我在我拥有的不同 CSV 文件中有 运行 它,它们没有错误,但特别是一个文件导致了这个问题。文件格式与其他格式完全相同。

使用 % 运算符的字符串格式要求您使用 printf 样式的格式字符串(即 %s,而不是 ?)。因此,如果要使用 % 运算符插入列名,请执行以下操作:

statement = """LOAD DATA LOCAL INFILE '/Path/To/My/File/{}.csv'
INTO TABLE propertyData.property_{}
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES ({})""".format(table_name, table_name,
                              ', '.join(["%s"] * len(columns)))
statement = statement % tuple(columns)