2016-07-15 29 views
0

Ich habe andere Einträge des gleichen Fehlers gelesen, und habe ihre Lösungen versucht, aber hatte kein Glück mit meinem Code.MySQLdb TypeError: nicht alle Argumente konvertiert

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 

Ich habe es auf verschiedene CSV-Dateien läuft, die ich habe, und sie sind fehlerfrei, aber eine Datei insbesondere dieses Problem verursacht. Das Format der Datei ist das gleiche wie die anderen.

Antwort

0

Für die Zeichenfolgenformatierung mit dem Operator % müssen Sie Druckformat-Formatfolgen verwenden (d. H. %s, nicht ?). Wenn Sie also die Spaltennamen mit dem Operator % interpolieren möchten, tun Sie Folgendes:

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) 
+0

Vielen Dank. – lokidoki