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