Peewee 原子事务


Peewee 的数据库类有 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')