sqlalchemy 强制所有连接关闭 mysql

2024-01-21

我们在一些复杂的单元测试中使用sqlalchemy。在每次测试结束时,我们完全使用以下命令拆除数据库drop_all。有时,有人会忘记关闭嵌入单元测试深处的会话。然后,我们必须花费大量时间试图找出问题所在,并最终关闭 sqlalchemy 会话。

我们想要一种可靠的方式来强制关闭与数据库的所有连接。我们已经尝试过了session.close_all(),但这并没有达到我所描述的效果。

编辑: 下面是当进程挂起并尝试删除数据库时我们看到的 mysql 进程列表。大概 ID 285 是有问题的进程:

+-----+------+-----------------+----------+---------+------+---------------------------------+------------------------------+
| Id  | User | Host            | db       | Command | Time | State                           | Info                         |
+-----+------+-----------------+----------+---------+------+---------------------------------+------------------------------+
| 172 | root | localhost       | mydb     | Query   |    0 | init                            | show processlist             |
| 285 | root | localhost:47147 | mydb     | Sleep   |    6 |                                 | NULL                         |
| 289 | root | localhost:47152 | mydb     | Query   |    5 | Waiting for table metadata lock | DROP TABLE `mytable`         |
+-----+------+-----------------+----------+---------+------+---------------------------------+------------------------------+

编辑:根据请求,我还包括事务日志:

------------
TRANSACTIONS
------------
Trx id counter 1144929
Purge done for trx's n:o < 1144827 undo n:o < 0 state: running but idle
History list length 398
LIST OF TRANSACTIONS FOR EACH SESSION:
---TRANSACTION 0, not started
MySQL thread id 37, OS thread handle 0x8f46bb40, query id 776 localhost root init
show engine innodb status
---TRANSACTION 0, not started
MySQL thread id 45, OS thread handle 0x8f2ceb40, query id 774 localhost 127.0.0.1 root Waiting for table metadata lock
DROP TABLE `mytable`
---TRANSACTION 1144823, ACTIVE 12 sec
MySQL thread id 41, OS thread handle 0x8f2ffb40, query id 595 localhost 127.0.0.1 root cleaning up
Trx read view will not see trx with id >= 1144824, sees < 1144824

在烧瓶中,这应该可以解决问题:

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

sqlalchemy 强制所有连接关闭 mysql 的相关文章

  • pandas DataFrame.join 的运行时间是多少(大“O”顺序)?

    这个问题更具概念性 理论性 与非常大的数据集的运行时间有关 所以我很抱歉没有一个最小的例子来展示 我有一堆来自两个不同传感器的数据帧 我需要最终将它们连接成两个very来自两个不同传感器的大数据帧 df snsr1 and df snsr2
  • 嵌套列表的重叠会产生不必要的间隙

    我有一个包含三个列表的嵌套 这些列表由 for 循环填充 并且填充由 if 条件控制 第一次迭代后 它可能类似于以下示例 a 1 2 0 0 0 0 0 0 4 5 0 0 0 0 0 0 6 7 根据条件 它们不重叠 在第二次迭代之后 新
  • MySQL 追加字符串

    How can I append a string to the end of an existing table value Let s say I have the table below And let s say that Mari
  • python multiprocessing 设置生成进程等待

    是否可以生成一些进程并将生成进程设置为等待生成的进程完成 下面是我用过的一个例子 import multiprocessing import time import sys def daemon p multiprocessing curr
  • 通过触发器应用表的列权限

    现在 我有一个名为 Members 的表 其中包含内容 分为联系人数据 银行数据 现在 管理员应该能够创建 更新 删除用户 这些用户保存在另一个表中 该表只能访问管理员 用户应该获得自己的 mysql 用户帐户 管理员还应该能够设置权限 例
  • 打印数字时添加千位分隔符[重复]

    这个问题在这里已经有答案了 我真的不知道这个问题的 名称 所以它可能是一个不正确的标题 但问题很简单 如果我有一个数字 例如 number 23543 second 68471243 我想要它使print 像这样 23 54368 471
  • 如何将特定范围内的标量添加到 numpy 数组?

    有没有一种更简单 更节省内存的方法可以单独在 numpy 中执行以下操作 import numpy as np ar np array a l r ar c a a 0 l ar tolist a r 它可能看起来很原始 但它涉及获取给定数
  • 使用 python/numpy 重塑数组

    我想重塑以下数组 gt gt gt test array 11 12 13 14 21 22 23 24 31 32 33 34 41 42 43 44 为了得到 gt gt gt test2 array 11 12 21 22 13 14
  • 无法导入 langchain.agents.load_tools

    我正在尝试使用 LangChain Agents 但无法导入 load tools 版本 langchain 0 0 27 我尝试过这些 from langchain agents import initialize agent from
  • 未知错误:Chrome 无法启动:异常退出

    当我使用 chromedriver 对 Selenium 运行测试时 出现此错误 selenium common exceptions WebDriverException Message unknown error Chrome fail
  • 如何将 ascii 值列表转换为 python 中的字符串?

    我在 Python 程序中有一个列表 其中包含一系列数字 这些数字本身就是 ASCII 值 如何将其转换为可以在屏幕上回显的 常规 字符串 您可能正在寻找 chr gt gt gt L 104 101 108 108 111 44 32 1
  • MySQL 转储未知选项“-no-beep”

    在旧服务器上我使用了mysql转储命令来备份 MySQL 数据库 在新服务器上 MySQL 版本为 5 6 相同的命令给出了错误 unknown option no beep 无论它插入什么 我也在互联网上搜索过 但找不到任何帮助 在 my
  • 为什么 csv.DictReader 给我一个无属性错误?

    我的 CSV 文件是 200 Service 我放入解释器的代码是 snav csv DictReader open screennavigation csv delimiter print snav fieldnames 200 for
  • 等待子进程使用 os.system

    我用了很多os system在 for 循环内调用创建后台进程 如何等待所有后台进程结束 os wait告诉我没有子进程 ps 我使用的是Solaris 这是我的代码 usr bin python import subprocess imp
  • 在virtualenv中下载sqlite3

    我正在尝试使用命令创建应用程序python3 manage py startapp webapp但我收到一条错误消息 django core exceptions ImproperlyConfigured 加载时出错 pysqlite2 或
  • 根据 Pandas 中的列表选择数据框行的子集

    我有一个数据框df1并列出x In 22 import pandas as pd In 23 df1 pd DataFrame C range 5 B range 10 20 2 A list abcde In 24 df1 Out 24
  • pandas.read_csv 将列名移动一倍

    我正在使用位于的 ALL zip 文件here http www fec gov disclosurep PDownload do 我的目标是用它创建一个 pandas DataFrame 但是 如果我跑 data pd read csv
  • 将索引与值交换的最快方法

    考虑pd Series s s pd Series list abcdefghij list ABCDEFGHIJ s A a B b C c D d E e F f G g H h I i J j dtype object 交换索引和值并
  • python 对浮点数进行不正确的舍入

    gt gt gt a 0 3135 gt gt gt print 3f a 0 314 gt gt gt a 0 3125 gt gt gt print 3f a 0 312 gt gt gt 我期待 0 313 而不是 0 312 有没有
  • JSON:TypeError:Decimal('34.3')不是JSON可序列化的[重复]

    这个问题在这里已经有答案了 我正在运行一个 SQL 查询 它返回一个小数列表 当我尝试将其转换为 JSON 时 出现类型错误 查询 res db execute SELECT CAST SUM r SalesVolume 1000 0 AS

随机推荐

  • Java exec 无法运行程序,错误 = 2

    我正在尝试使用 Java exec 从 Java 应用程序运行 R exe R 位于环境变量中 如果我使用 R 命令从 cmd 执行它 它就可以工作 如果我在 Java 中执行示例指令并尝试打开记事本 它会起作用 Runtime rt Ru
  • OpenCV:使用 Canny 和 Shi-Tomasi 检测扑克牌的圆角

    I want to do some planar rectification to convert from left to right 我有进行校正的代码 但我需要 4 个角坐标 我使用以下代码来查找它们 import cv2 image
  • Angular js 中的内容可编辑

    我有一张表格 如下所示 A B C D abc pqr XYZ RSY 现在 在这张表中 我使用的是content editable of HTML5为了column B 这样 我就可以编辑column B 现在 当我编辑这个时 有什么方法
  • 检查 OpenCart 2.0 中的模块位置

    我使用以下代码来检查模块位置 所以 它在 OpenCart 1 5 6 中运行良好 当模块在内容左右面板中启用时 我想在 OpenCart 中隐藏 javascript 代码 https stackoverflow com question
  • 创建视图时出现 Oracle 错误 - ORA-01720

    我在 Oracle 11 2 0 4 0 环境中遇到了一个让我困惑的问题 我有一个正在运行的已编译视图 我可以从中选择数据 但我无法在不出现 ORA 01720 错误的情况下更改它 关于我的设置的一些信息 简单来说 我有 2 个模式 A 和
  • 实验开发服务器组件时使用哪种 XMPP 服务器

    我想尝试使用开发 XMPP 服务器组件XEP 0114 Jabber 组件协议 http xmpp org extensions xep 0114 html 您推荐哪台服务器 为什么 我说的是易于开发 社区支持 文档 示例等 这是一个很难回
  • 使用 HTML Agility Pack 删除重复元素链

    我正在尝试删除任何重复或多次出现的任何我的 html 文档中的标签 这是我到目前为止所想出的 非常愚蠢的代码 HtmlNodeCollection elements nodeCollection ElementAt 0 SelectNode
  • Android:有没有一种简单的方法可以找到我的项目中的所有字符串?

    我想扫描我的 Android 项目中的所有硬编码字符串 以便我可以本地化该项目 将字符串放入 strings xml 中 我在 Eclipse 中看到 外部化字符串 的选项 但它并非特定于 Android I know 您可以重构单个字符串
  • 如何隐藏 Google Invisible reCAPTCHA 徽章

    在实施新的 Google Invisible reCATPTCHA 时 默认情况下 您会在屏幕右下角看到一个 受 reCAPTCHA 保护 的小徽章 当您将鼠标滑过时 该徽章会弹出 我想隐藏这一点 Google 现在允许隐藏徽章FAQ ht
  • 将键代码发送到Windows中正在运行的应用程序[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在运行 Windows 10 是否可以 从命令行 向已运行的 Windows 应用程序发送键码 这样这个应用程序就会认为我按下了某
  • 请求流示例在我的环境中不起作用

    我一直在尝试使用 Python 请求来使用 Twitter Streaming API 有一个简单的例子 http docs python requests org en latest user advanced streaming req
  • jQuery Touchwipe - 仅禁用 1 个轴的默认滚动

    我使用 jQuery Touchwipe 插件 http www netcu de jquery touchwipe iphone ipad library http www netcu de jquery touchwipe iphone
  • 如何从客户那里获取 iPhone 崩溃日志?

    有谁知道如何从客户那里获取崩溃日志 而不是手动要求他们同步并转到这个目录和这个目录并发送 是否有任何自动方法可以将崩溃报告发送到我们的服务器 您可以执行自己的崩溃日志记录PLC故障报告器 http code google com p plc
  • 使用纬度和经度时收到 403 禁止错误:地理编码

    我们的网站可以选择插入您的邮政编码 然后与地理编码一起计算出纬度和经度 此代码多年来没有更改 但今天 如果用户尝试插入邮政编码或从昨天或在错误 远程服务器返回错误 403 禁止 之前更新它 弹出 请求数量还没有超过 2 500 所以我不认为
  • BitmapSource.Create() 方法中 DPI 的相关性是什么?

    我读了维基百科的文章DPI http en wikipedia org wiki Dots per inch 但这让我更加困惑 我没有图像上的任何 DPI 信息 我应该使用什么 DPIBitmapSource Create http msd
  • C#类型转换不一致?

    在 C 中 我无法隐式转换long to an int long l 5 int i l CS0266 Cannot implicitly convert type long to int An explicit conversion ex
  • 调用M2存储库中的jar文件

    我有一个项目 我想在当前项目的执行后阶段调用 M2 存储库中的另一个 Jar 文件 我的 POM 的示例骨架
  • TypeScript 中像 methodName() 这样的尖括号有什么用?

    如果有任何关于为什么我们在类型脚本中使用尖括号 的教程 您能帮我一下吗 例如 我在这里给出了一些代码 我需要解释 export class HomePage constructor public navCtrl NavController
  • 为什么G1GC在开始混合收集之前先收缩年轻代?

    当 G1 决定需要开始进行混合收集时 它会积极地将我们的 Eden 空间从 10g 缩小到大约 1g Heap before GC invocations 294 full 0 garbage first heap total 204800
  • sqlalchemy 强制所有连接关闭 mysql

    我们在一些复杂的单元测试中使用sqlalchemy 在每次测试结束时 我们完全使用以下命令拆除数据库drop all 有时 有人会忘记关闭嵌入单元测试深处的会话 然后 我们必须花费大量时间试图找出问题所在 并最终关闭 sqlalchemy