2014-12-09 2 views
1

MyISAM 데이터베이스가있는 데이터베이스에서 MySQLdb 커서로 여러 명령문을 실행하려고합니다. 이 answer 및 다른 곳에서 설명 된 다른 모든 방법을 따르지만 성공하지 못했습니다. 테이블의 저장 이후MySQLdb 커서에서 다중 명령문 실행

>>> import MySQLdb as mdb 
>>> from contextlib import closing 

>>> con = mdb.connect('host', 'user', 'password', 'database') 

>>> with closing(con.cursor()) as cur: 
>>>  cur.callproc('add_date', [1418112000]) 
>>>  cur.callproc('add_date', [1418119000]) 
>>>  #con.commit() 
>>>  cur.close() 

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

내가 커밋 호출 할 필요는 없습니다, 의 MyISAM()이다. 사실 commit()으로 전화하면 오류가 발생합니다.

여러 문장을 올바르게 호출하는 방법은 무엇입니까?

답변

0

절차를 호출 한 후, 당신은 커서를 닫고 또 다른 문을 실행하는 데 사용하기 전에 다시 열 수 있습니다

cur.close() 

cur = con.cursor() 

커서가 fetchall() 후 즉시 닫을 수 있습니다. 결과 세트는 여전히 남아 있으며 반복 될 수 있습니다. 추가 SQL 코드를 실행하려면 저장된 procecude를 호출 한 후 커서를 정리하거나 닫아야합니다. 파이썬에서는 문제가 아니지만 MySQL에서는 문제가되지 않습니다.

관련 문제