2013-11-20 5 views
0

나는 그것을 잘 나는 쿼리로 SQL에서이 프로그램을 실행할 때 기본적으로 같은실행 여러 MySQL은 파이썬

sql = INSERT INTO test (a,b,c) VALUES ("test","test",1);INSERT INTO test (a,b,c) VALUES ("2nd test","2nd test",6); 

여러 insert 문을 연결 한 문자열을 작동 한에 한 번 삽입하고 모두 문을 삽입 . 그러나

, 내가 사용 파이썬에서 실행 다음

cursor = db.cursor() 
sql = INSERT INTO test (a,b,c) VALUES ("test","test",1);INSERT INTO test (a,b,c) VALUES ("2nd test","2nd test",6); 
cursor.execute(sql) 
db.commit() 

는이 오류를 얻을 :

ProgrammingError: (2014, "Commands out of sync; you can't run this command now") 

뭐죠이 문제를 해결하고 한 번에 여러 개의 문을 실행하는 가장 좋은 방법은?

감사합니다.

답변

2

이 오류는 cursor.execute이 실행 당 하나의 SQL 만 처리 할 수 ​​있다는 사실에 관한 것입니다.

sql = 'INSERT INTO test (a,b,c) VALUES (%s, %s, %s)' 
for values in [("test","test",1), ("2nd test","2nd test",6)] 
    cursor.execute(sql, values) 

또는 한 번에 실행 : 당신이 중 하나를 루프 그것을 원하는

sql = 'INSERT INTO test (a,b,c) VALUES ("test","test",1),("2nd test","2nd test",6)' 
cursor.execute(sql) 
+0

완벽! 고맙습니다. 여러 가지 이유로 한 번에 모두 들어가야하므로 두 번째 방법이 효과가있었습니다. – user1898958