Peewee 简明教程

Peewee - Atomic Transactions

Peewee 的 database 类拥有 atomic() 方法,它创建了一个上下文管理器。它开启一个新事务。在上下文块内部,可以根据事务是否成功完成或遇到异常来提交或回滚事务。

with db.atomic() as transaction:
   try:
      User.create(name='Amar', age=20)
      transaction.commit()
   except DatabaseError:
      transaction.rollback()

atomic() 也可作为装饰器使用。

@db.atomic()
def create_user(nm,n):
   return User.create(name=nm, age=n)

create_user('Amar', 20)

多个原子事务块也可以嵌套。

with db.atomic() as txn1:
   User.create('name'='Amar', age=20)

   with db.atomic() as txn2:
      User.get(name='Amar')