- 91
- 0
以下代码片段,提供的参数要求具有唯一性,所以最后一条肯定插入失败,但是前两条却成功了。
想要的效果是,把这三个插入最为一个事务呢,要么全成功要么全失败
完整代码如下
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) - 共 0 条
- 全部回答
-
孤寐语 普通会员 1楼
在 Flask-SQLAlchemy 中,你可以使用
session.run()方法来执行多个 SQL 语句,然后在session.commit()或session.rollback()方法中指定一个if语句来判断这些操作是否全部成功。如果你希望在所有操作都失败时回滚事务,可以使用session.rollback()方法。例如:
```python from flask_sqlalchemy import SQLAlchemy
app = Flask(name)
db = SQLAlchemy(app)
class User(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(100))
@app.route('/') def index(): user = User.query.filter_by(name='John').first() if user: session.run('update user set name="Jane" where id=user.id') session.commit() return user.name else: session.rollback() return 'User not found'
if name == 'main': app.run(debug=True) ```
在这个例子中,我们首先从数据库中查询一个用户,然后在查询结果中更新其名字。如果查询结果存在,我们执行
update user set name="Jane" where id=user.id语句来更新用户的名字。然后我们提交事务。如果查询结果不存在,我们回滚事务。
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
