如何让 Flask-SQLAlchemy 在出现异常时自动回滚会话?

2024-01-23

我想设置一个使用以下构建的应用程序Flask-SQLAlchemy如果视图引发在视图代码外部冒泡的异常(即未在内部捕获),则回滚对数据库所做的所有更改。

我希望它能够工作,即使某些对象在子事务中自动或直接通过session.commit().

类似的东西Django的事务请求包装 https://docs.djangoproject.com/en/1.8/topics/db/transactions/#tying-transactions-to-http-requests.


你可以这样做:

@app.teardown_request
def teardown_request(exception):
    if exception:
        db.session.rollback()
    db.session.remove()

看一看here http://flask.pocoo.org/docs/0.10/api/#flask.Flask.teardown_request获取teardown_request 信息。您可能需要设置PRESERVE_CONTEXT_ON_EXCEPTION如果您处于调试模式,请配置变量。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何让 Flask-SQLAlchemy 在出现异常时自动回滚会话? 的相关文章

随机推荐

  • python维护两个不同的随机实例

    我正在尝试进行一些分析 出于 原因 我希望程序中的每个对象都有自己的种子 但没有全局种子 我能完成这样的事情吗 a random seed seed1 b random seed seed1 for a in range 5 print a
  • 在 C++ 中使用 getline() 进行文件输入

    我正在尝试用 C 完成一个简单的初学者任务 我有一个包含该行的文本文件 约翰 史密斯 31 就是这样 我想使用 ifstream 变量读取此数据 但我想将名称 John Smith 读入一个字符串变量 然后将数字 31 读入一个单独的 in
  • HTML5 Canvas 改变图像颜色

    我正在使用 jquery 滑块通过着色将图像颜色从蓝色更改为红色 范围为 100 到 100 这意味着当滑块值为 0 时 图像应看起来正常 默认值 并根据滑块值从蓝色 100 到 100 变化 在我的本地 我可以将图像加载到画布中 由于某种
  • 如何在 Python 中将整个列表作为命令行参数传递?

    我试图将两个包含整数的列表作为参数传递给 python 代码 但sys argv i 获取字符串列表形式的参数 输入看起来像 python filename py 2 3 4 5 1 2 3 4 我发现了以下 hack 来转换列表 strA
  • python获取函数中参数的变量名[重复]

    这个问题在这里已经有答案了 我想做这样的事情 fib 1 foo arg print arg argName the name of the variable that was put in for arg foo fib 并得到这个返回
  • 带有 .gitignore 的白名单目录

    我想在一个 git 存储库中有两个目录 我选择的方法是在顶级目录中创建 git 存储库 然后使用 gitignore 将感兴趣的两个目录列入白名单 要求位于我尝试的 gitignore 文件的注释中 Blacklist everything
  • 如何在滚动时从 SliverAppBar 淡入/淡出小部件?

    当用户在屏幕上滚动时 我想从 SliverAppBar 中 淡入 和 淡出 小部件 这是我想做的事情的一个例子 这是我的代码 没有 褪色 https gist github com nesscx 721cd823350848e3d594ba
  • 如何获取QGraphicsItem坐标系中光标单击的位置?

    我有一个QGraphicsScene with QGraphicsItem添加到其中 假设我点击了地图图像 QGraphicsItem 其中绘制绿色圆圈 如何根据此获得点击位置QGraphicsItem并不是QGraphicsScene坐标
  • 在 ASP .NET Core Web API Controller 中注入 Serilog 的 ILogger 接口

    我能找到的有关在 ASP NET Core Web 应用程序中使用 Serilog 的所有示例都使用 MicrosoftILogger
  • 核心数据保存UIImage

    我在这个数据库中有一个核心数据 我应该保存图像 那么如何保存只需要 URL 的图像 请举例 大图像 gt 100 kb 不应保存在 CoreData 中 因为它确实会增加托管对象的内存占用 对于这些图像 我会将 CoreData 中的路径保
  • 是否可以将对象解构为现有变量?

    我正在尝试使用对象解构来提取变量 但这些变量已经存在 如下所示 const x 1 y 2 Those should be 1 and 2 const x y complexPoint const point x y 有没有办法在不重命名解
  • 使用 WhatsApp Cloud API 发送 Commerce Manager 目录产品

    成功将我的目录从商务管理器添加到 Whatsapp 管理器后 现在我想通过 WhatsApp 云 API 向用户发送该产品 我看到了与许可 API 相关的链接 但没有找到运气 https developers facebook com do
  • 通过(弹出)菜单退出应用程序时窗口泄漏

    我希望你能帮助我 我有一个漏窗只要我通过 弹出 菜单选项退出我的应用程序在工具栏中 如果我通过正常方法退出应用程序 一切都很好 有人可以帮忙吗 我似乎找不到错误 我正在尝试找到正确的解决方案 我声明了 2 个静态字符串变量 但我猜这不是问题
  • 如何在 PostgreSQL ORDER BY 子句中使用 ALIAS?

    我有以下查询 SELECT title stock one stock two AS global stock FROM product ORDER BY global stock 0 title 在 PostgreSQL 8 1 23 中
  • 根据字符串匹配过滤字符串向量

    我有以下向量 X lt c mama log papa log mimo png mentor log 如何检索另一个仅包含以 m 开头并以 log 结尾的元素的向量 您可以使用grepl用正则表达式 X grepl m log X
  • 将 AudioBufferList 转换为 CMSampleBuffer 会产生意外结果

    我正在尝试转换AudioBufferList我从音频单元得到的CMSampleBuffer我可以传递到AVAssetWriter保存麦克风中的音频 这种转换有效 因为我为执行转换而进行的调用不会失败 但记录最终会失败 并且我在日志中看到一些
  • 为什么我的 MVC 应用程序中有两个 web.config 文件

    Views 文件夹中有一个 应用程序的根目录中还有另一个 我想注册一个自定义处理程序 但我不明白代码应该放在哪里 我在集成模式下运行 IIS7 所以我必须添加
  • C++11 中的线程池

    相关问题 关于 C 11 C 11 std 线程池 https stackoverflow com questions 12993451 c11 stdthread pooled C 11 中的 async launch async 是否会
  • NSScrollView 具有未剪辑的内容视图?

    有没有办法设置我的滚动视图不剪辑其内容 这是一个NSTextView 我有 NSScrollView 的子类并想要它的内容not被剪裁到其边界 我尝试过重写 BOOL wantsDefaultClipping return NO in My
  • 如何让 Flask-SQLAlchemy 在出现异常时自动回滚会话?

    我想设置一个使用以下构建的应用程序Flask SQLAlchemy如果视图引发在视图代码外部冒泡的异常 即未在内部捕获 则回滚对数据库所做的所有更改 我希望它能够工作 即使某些对象在子事务中自动或直接通过session commit 类似的