现在有一个问题.
我的存储过程中有update,最后返回select的表
直接在mysql 中运行可以正常,update也生效
但放在django中,能返回select 表,update在执行存储过程时是运行了的(影响了select结果),但存储过程运行后,查询数据,发现update没有生效,即回滚了...cursor = connection.cursor()
cursor.execute("call Proc_Set_Isread(%s,%s)",[id,'1'])
for row in cursor.fetchall():
...
我想是因为connection.connection.commit()的原因
因为要想返回数据就不能用connection.commit(是不是这样????)
但不用commit,更改就不能生效..... 我在存储过程中调用其它存储过程,也不能解决这个问题...
请问在django/python中,有没有即提交了数据,又查询到结果的好方法.
我的存储过程中有update,最后返回select的表
直接在mysql 中运行可以正常,update也生效
但放在django中,能返回select 表,update在执行存储过程时是运行了的(影响了select结果),但存储过程运行后,查询数据,发现update没有生效,即回滚了...cursor = connection.cursor()
cursor.execute("call Proc_Set_Isread(%s,%s)",[id,'1'])
for row in cursor.fetchall():
...
我想是因为connection.connection.commit()的原因
因为要想返回数据就不能用connection.commit(是不是这样????)
但不用commit,更改就不能生效..... 我在存储过程中调用其它存储过程,也不能解决这个问题...
请问在django/python中,有没有即提交了数据,又查询到结果的好方法.
但在你的宿主程序中则不行了。看一下你的宿主程序的说明,如果保持同一SESSION不结束。
cursor.callproc("Proc_Get",(id,1))
result_list = []
for row in cursor.fetchall():
print row[0]
cursor.nextset()
connection.connection.commit()
cursor.close()
connection.close()解决了.这样就OK了
或者在存储过程中这样也可以:
START TRANSACTION;
....
COMMIT;