我有一个从Python(包装在Django中)执行的MySQL存储过程。当我尝试执行第二条语句时,出现错误“命令不同步;您现在不能运行此命令”。我目前无法提交交易。当我调用过程时,这只是一个问题。该怎么办?
cursor.callproc('my_mysql_procedure', [some_id,]) result = cursor.fetchall() for r in result: do something cursor.execute("select * from some_table") result = cursor.fetchall()
编辑:我被要求发布MySQL过程。我使它变得非常简单,但我仍然遇到相同的问题
delimiter $$ create procedure my_mysql_procedure(p_page_id int) begin select 1 from dual; end$$ delimiter ;
感谢JoshuaBoshi的回答,该问题得以解决。调用该过程之后,我必须关闭游标并再次打开它,然后才能使用它执行另一条语句:
cursor.close() cursor = connection.cursor()
可以在之后立即关闭光标fetchall()。结果集仍然保留并且可以循环通过。
fetchall()