小编典典

Python,“命令不同步;您现在不能运行此命令”

mysql

我有一个从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 ;

阅读 294

收藏
2020-05-17

共1个答案

小编典典

感谢JoshuaBoshi的回答,该问题得以解决。调用该过程之后,我必须关闭游标并再次打开它,然后才能使用它执行另一条语句:

cursor.close()

cursor = connection.cursor()

可以在之后立即关闭光标fetchall()。结果集仍然保留并且可以循环通过。

2020-05-17