flask mysql 事务_flask-sqlalchemy 默认是开始事务的,那么如何标记一组操作为一个 transaction 要么全成功要么全失败?...

以下代码片段,提供的参数要求具有唯一性,所以最后一条肯定插入失败,但是前两条却成功了。

想要的效果是,把这三个插入最为一个事务呢,要么全成功要么全失败

完整代码如下

from flask import Flask

from flask_sqlalchemy import SQLAlchemy

from sqlalchemy import Integer, String, Column

db = SQLAlchemy()

# 模型

class User(db.Model):

id = Column(Integer, primary_key=True, autoincrement=True)

username = Column(String(10), nullable=False, unique=True)

def __init__(self, username):

self.username = username

def create_app():

app = Flask(__name__)

app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+cymysql://root:12345678@localhost/test_sqlalchemy'

db.init_app(app)

with app.app_context():

db.create_all()

return app

app = create_app()

@app.route("/hello")

def hello_world():

users = [User("111"), User("222"), User("111")]

try:

db.session.add_all(users)

db.session.commit()

except:

db.session.rollback()

return "hello_wold"

if __name__ == "__main__":

app.run(debug\=True)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值