django访问mysql存储过程问题

duxianghe 2009-02-11 03:32:31
现在有一个问题.
我的存储过程中有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中,有没有即提交了数据,又查询到结果的好方法.
...全文
420 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
aking8736 2009-02-13
  • 打赏
  • 举报
回复
友情帮顶,顺带接分!!!
duxianghe 2009-02-13
  • 打赏
  • 举报
回复
人气太差
或者在存储过程中这样也可以:
START TRANSACTION;
....
COMMIT;
ChumpKlutz 2009-02-13
  • 打赏
  • 举报
回复
使用MySQLdb要显示commit的
百年树人 2009-02-12
  • 打赏
  • 举报
回复
关注...
duxianghe 2009-02-12
  • 打赏
  • 举报
回复
cursor = connection.cursor()
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了
duxianghe 2009-02-12
  • 打赏
  • 举报
回复
有没有更直接的答案
ACMAIN_CHM 2009-02-11
  • 打赏
  • 举报
回复
在mySQL直接命令下,你的update, select在一个session中,所以可以看到update后的东西,即使没有提交。
但在你的宿主程序中则不行了。看一下你的宿主程序的说明,如果保持同一SESSION不结束。

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧