发现python peewee的资料相比sqlalchemy来说真心少呀,于是乎为了让这两个orm有竞争产生发展,我决定多写点peewee的文档.    还有一方面是官方的docs文档有些地方说的不明不白的。 虽然大部分功能都给出了样例代码,但对于有些的场景光看docs文档是不够的.  上次说了peewee ForeignKeyField外键, 这次就写下peewee 事务方面的文档。 简单说, peewee对数据库事务处理封装了几个模式,有with关键词,装饰器,普通模式. 


该文章写的有些乱,欢迎来喷 ! 另外文章后续不断更新中,请到原文地址查看更新。

http://xiaorui.cc/2016/02/18/%E5%85%B3%E4%BA%8Epython-peewee%E7%9A%84%E4%BA%8B%E5%8A%A1%E5%9B%9E%E6%BB%9A%E7%94%A8%E6%B3%95/

.

在这之前,我们要还是需要看下peewee关于事务方面的代码。 我们可以发现MySQLDatabase默认就把for_update配置为True,另外父类Database有autocommit参数,用来开启事务.

下面的模式是with关键词模式,db.atomic()对接了with模式。

下面是装饰器的模式.


手动自动提交模式
默认情况下,数据库是用自动提交的,我们可以在构造db对象的时候控制autocommit,或者可以通过set_autocommit()进行后续配置是否开启事物. 
如果你选择禁用自动提交,那么你必须显式地调用数据库。要使用 begin()开始一个事务,并提交或回滚。
下面的行为跟上面的的上下文管理器和装饰类似:

这是peewee docs里面的例子:

这例子相对整洁干净.  roolback() 是回滚函数,commit() 提交事务的修改.


更详细的peewee事务操作方面的文档,请参考 http://docs.peewee-orm.com/en/latest/peewee/transactions.html 

END… …



对Python及运维开发感兴趣的朋友可以加QQ群 : 478476595 !!!
{ 2000人qq大群内有各厂大牛,常组织线上分享及沙龙,对高性能及分布式场景感兴趣同学欢迎加入该QQ群 }

另外如果大家觉得文章对你有些作用!   帮忙点击广告. 一来能刺激我写博客的欲望,二来好维护云主机的费用.
如果想赏钱,可以用微信扫描下面的二维码. 另外再次标注博客原地址  xiaorui.cc  ……   感谢!
暂无相关产品