2016-07-15 2 views
0

동일한 오류의 다른 항목을 읽었으므로 솔루션을 시도했지만 코드와 관련하여 문제가 없습니다.MySQLdb TypeError : 모든 인수가 변환되지 않았습니다.

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 파일에 그것을 실행했다, 그들은 오류가 무료입니다 만, 특히 하나 개의 파일이 문제를 일으키는 것입니다. 파일의 형식은 다른 형식과 완전히 동일합니다.

답변

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

고맙습니다. – lokidoki

관련 문제