gpt4 book ai didi

python - SQLAlchemy(Python)/Sequelize(Node.js) 回滚事务(撤销按钮)

转载 作者:行者123 更新时间:2023-12-03 22:23:19 24 4
gpt4 key购买 nike

所以我现在正在使用 GraphQL 和带有 SQLAlchemy 的 Python 或带有 Sequelize 的 Node.js 开发后端 API,以将所有数据写入 SQLite 数据库。
我仍然不确定我最终会得到什么后端。也许这个问题和我的问题的答案会引导我使用一个或另一个。
所以我的应用程序将有一个功能,您可以将飞镖 throw (如双 20、三重 19 等)添加到带有 throw 的表中。根据选择的游戏和选择的条件,此 throw 将从总计数中减去,或者可能被添加到计数器表或类似的东西中。
每次添加 throw 时,都会检查游戏是否获胜以及其他一些检查。那些也可能将数据写入(提交)到数据库。
现在,如果用户输入错误的数字/或者自动飞镖机会发现错误的 throw 数字(故障),那么数据库中有一个 throw 和几个更改的数据,我将不得不回滚。
在飞镖计分器应用程序中,您会在 ios 或 android 应用程序商店中找到一个撤消按钮,该按钮将从数据库中删除 throw 以及由输入错误 throw 引起的所有“效果”。
作为前 mssql 管理员,我的第一个想法是事务日志和回滚功能。但是在网上搜索了一段时间后,我了解到 SQLAlchemy 和 Sequelize 只会在异常时回滚事务。
我可以通过点击按钮/调用 '/undo' 之类的 rest api 路径来故意回滚最后一个“完整”事务(意味着所有更改,例如一个函数将在函数结束时进行的所有更改),如果是这样,是否有任何代码我缺少 SQLAlchemy 或 Sequelize 的片段?
此致,
帕特里克
编辑:
收集提供的答案:

  • 命令模式 (python)
  • 最佳答案

    根据 Can I rollback a transaction I've already committed? (data loss) 和其他来源,不,您不能回滚已提交的事务。这也是依赖于数据库的,因此与 ORM 或语言无关。

    我建议实现 Command pattern ,这对 Undo 非常有用。所以基本上是从代码中恢复,而不是从数据库中恢复。

    关于python - SQLAlchemy(Python)/Sequelize(Node.js) 回滚事务(撤销按钮),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60288137/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com