以下代码片段,提供的参数要求具有唯一性,所以最后一条肯定插入失败,但是前两条却成功了。
想要的效果是,把这三个插入最为一个事务呢,要么全成功要么全失败
完整代码如下
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)