One - One Code All

Blog Content

sqlalchemy commit 和 flush

Python   2013-07-20 18:53:47

sqlalchemy commit 和 flush


先看下对象的状态。总共5个,这里只谈3个。


transitant:刚new出来的对象,没有和session或者orm框架产生关联。


pending:transitant的对象调用add后,就会变为pending,加入了orm框架的监管范围。


persistant:调用flush以后就会变味persistant,也就是被写到了数据库中。


查询官网后,发现:


flush会把更改提交到数据库,commit会默认调用flush,然后标志这个事务的提交,也就是事务执行完毕。如果只调用flush,那么更新虽然可以被写入数据库,但是事务是不完整的,没有提交。由于事务隔离型的存在,可能其他的事务是无法看到这次更新操作的。只有调用了commit,才能被看成是事务完整的执行完毕。


flush会写入数据库,commit会调用flush,并且表示事务结束。



上一篇:python科学计算之非线性方程组求解scipy
下一篇:python内存监测

The minute you think of giving up, think of the reason why you held on so long.