码迷,mamicode.com
首页 > 其他好文 > 详细

peewee 事物 回滚

时间:2017-10-10 16:54:56      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:自动   mob   else   env   open   利用   手机号   bin   ack   

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 事物 回滚

标签:自动   mob   else   env   open   利用   手机号   bin   ack   

原文地址:http://www.cnblogs.com/aaron-agu/p/7645723.html

踩
(0)
赞
(0)
   
举报
评论 一句话评论(0)
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!