peewee 事物 回滚

Posted aaron_agu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了peewee 事物 回滚相关的知识,希望对你有一定的参考价值。

peewee 事物 回滚

#!/usr/bin/env python
# coding=utf-8
from peewee import *


db = mysqlDatabase(host=123.57.229.66, user=root, passwd=password, database=czj, charset=utf8)

class tb_users(Model):
    id = PrimaryKeyField()  # 主键
    mobile = CharField(unique=True, max_length=64, null=False)  # 注册手机号/openid
    password = CharField(max_length=32)  # 密码
    truename = CharField(max_length=32)  # 真实姓名/nickname

    class Meta:
        database = db

#
def one():
    try:
        with db.atomic():
            tb_users.create(mobile=120, password=120, truename=120)
            raise haha
        print Success
    except IntegrityError:
        print Failure: %s is already in use. % username

#
@db.atomic()
def create_user():
    tb_users.create(mobile=120, password=120, truename=120)
    raise haha

def two():
    create_user()


#
def three():
    db.set_autocommit(False)
    db.begin()
    try:
        tb_users.create(mobile=120, password=120, truename=120)
        raise haha
    except:
        db.rollback()
        raise
    else:
        try:
            db.commit()
        except:
            db.rollback()
            raise
    finally:
        db.set_autocommit(True)

#
def four():
    db.set_autocommit(False)
    db.begin()
    tb_users.create(mobile=120, password=120, truename=120)
    db.rollback()
    db.commit()
    db.set_autocommit(True)

实例1,2是使用 peewee封装的db.atomic()原子性,3,4是利用关闭自动提交和手动回滚来保证事物的原子性;

 

以上是关于peewee 事物 回滚的主要内容,如果未能解决你的问题,请参考以下文章

mysql的engine不同,导致事物回滚失败的问题

SpringBoot事务注解@Transactional 事物回滚手动回滚事物

C# - 事物回滚

事物的回滚

spring全注解事务管理中怎么手动回滚事物

spring事物回滚机制 (事务异常回滚,捕获异常不抛出就不会回滚)