MySQLdb TypeError:并非转换所有参数

时间:2016-07-15 16:01:36

标签: python mysql-python

我已阅读同一错误的其他条目,并尝试过他们的解决方案,但我的代码没有运气。

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文件上运行它,并且它们没有错误,但特别是一个文件导致了这个问题。该文件的格式与其他格式完全相同。

1 个答案:

答案 0 :(得分:0)

使用%运算符进行字符串格式设置要求您使用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)