1
imnpc 2015 年 8 月 8 日
Selete 为什么要开启事务呢 一般不是写入重要操作的时候才需要吗
|
2
msg7086 2015 年 8 月 8 日
没写入的话commit和rollback没区别呀,都是释放掉当前上下文。
|
3
hdshen 2015 年 8 月 8 日
只做查询的时候 不开启事物
有db写入的时候 才开启 |
4
realpg PRO MySQL么?
第一,无更新操作不开启事务 第二,如果是“可能更新”而开启事务最后因为逻辑直接要结束,应该commit,因为rollback必然要进行一大堆内部逻辑。不过无写入rollback跟commit的开销差距极小, |
5
sivacohan PRO PostgreSQL的话建议用commit
|
8
abv OP |
9
oclock 2015 年 8 月 9 日
不是开销问题,select for update之后到底有没有写动作,有的话肯定应该commit。一般可以这样
try: db.session.execute(...) ... db.session.commit() except SQLAlchemy.Error: db.session.rollback() 如果不捕捉异常,常常出现悬空连接idle in trasanction (postgresql),而数据库要过很久才会关闭这些连接 |