저는 파이썬 초보자입니다. CSV 파일을 구문 분석하고 해당 내용을 데이터베이스에 추가하려고합니다.CSV to Python : 여러 인수 전달
내 현재 코드 :
with open('fruit.csv', 'rb') as f:
reader = csv.reader(f, delimiter='\t', quoting=csv.QUOTE_NONE)
for row in reader:
sql = "INSERT INTO fruit(ID,NAME,COLOUR,SIZE) VALUES(?, ?, ?, ?)"
try:
cursor.execute(sql, [ row[0], row[1], row[2], row[3] ])
db.commit()
print('done')
except csv.Error as e:
print('error: ' + e)
db.rollback()
나의 현재 오류 :
Traceback (most recent call last):
File "mysqltest.py", line 23, in <module>
cursor.execute(sql, (row[0], row[1], row[2], row[3]))
File "C:\Python27\lib\site-packages\MySQLdb\cursors.py", line 187, in execute
query = query % tuple([db.literal(item) for item in args])
TypeError: not all arguments converted during string formatting
내가 SE 여기에 다른 많은 질문에 대한 답변을 읽을 수는 있지만 아직도 여러 값을 전달하는 방법을 이해할 수 없다 SQL 문자열에 대한 별도의 값으로 행 내에서.
확실하지 경우 관련 그러나 이것은 내가에 쓰기를 시도하고있어 테이블의 구조 : 누군가가 내가 잘못 무엇인지 설명 할 수 있다면
TABLE FRUIT (
ID int primary key NOT NULL,
NAME CHAR(20) NOT NULL,
COLOUR CHAR(20),
SIZE CHAR(20))
은, 정말 이해할 수있을 것입니다!
목록 목록 끝에 쉼표를 넣으십시오. 더 많은 목록 목록 대신 튜플을 사용해보십시오 :) –
내가 그것을 이해하는 방법은, 남겨두고? 나중에 .execute() 호출에서 인수를 전달할 수 있지만, % s (실패한 경우)를 시도했을 때 인수로 전달하려고했습니다. 방금 .format을 추가하고 나머지 부분을 조정할 때 .format을 추가하려고 시도했지만 프로그래밍 오류가 발생하여 (?,?,?,?) 근처에서 구문을 읽도록 지시 받았습니다. – Nicholas
@ Dex'ter 답장을 보내 주셔서 감사합니다. 이게 당신이 의미 한 것 같아요? vals = (행 [0], 행 [1], 행 [2], 행 [3]). ]) cursor.execute (sql, vals) ' – Nicholas