每个连接有多个事务的 MySQLdb

2024-01-04

是否可以对多个事务使用单个 MySQLdb 连接而不关闭它们之间的连接?换句话说,是这样的:

conn = MySQLdb.connect(host="1.2.3.4", port=1234, user="root", passwd="x", db="test")

for i in range(10):
    try:
        cur = conn.cursor()
        query = "DELETE FROM SomeTable WHERE ID = %d" % i
        cur.execute(query)
        cur.close()
        conn.commit()

    except Exception:
        conn.rollback()

conn.close()

似乎工作正常,但我只是想仔细检查一下。


我认为这里对交易的构成存在误解。

您的示例打开一个连接,然后执行one其上进行交易。您在该事务中执行多个 SQL 语句,但在提交后完全关闭它。当然,这再好不过了。

执行多个交易(而不只是 SQL 语句),看起来像这样:

conn = MySQLdb.connect(host="1.2.3.4", port=1234, user="root", passwd="x", db="test")

for j in range(10):
    try:
        for i in range(10):
            cur = conn.cursor()
            query = "DELETE FROM SomeTable WHERE ID = %d" % i
            cur.execute(query)
            cur.close()
        conn.commit()
    except Exception:
        conn.rollback()

conn.close()

上面的代码提交了 10 个事务,每个事务包含 10 个单独的删除语句。

是的,只要您不在线程之间共享该连接,您应该能够毫无问题地重复使用打开的连接。

例如,SQL炼金术 http://www.sqlalchemy.org/通过池化连接来重用连接,根据需要向应用程序分发打开的连接。新事务和新语句在应用程序的整个生命周期中在这些连接上执行,无需在应用程序关闭之前关闭。

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

每个连接有多个事务的 MySQLdb 的相关文章

随机推荐

  • React、Sass,从 .scss 文件导入 img 时出现错误

    我想设置一个简单的背景图像 并覆盖 sass 文件中的反应组件 但我收到此错误 Module not found You attempted to import assets hero jpg which falls outside of
  • symfony2.1 捆绑版本混乱,针对 symfony 和 sonata admin / knp 菜单捆绑

    我想在新项目中使用 symfony2 1 我尝试用composer安装symfony2 但是存在多个错误 问题 因此我对每个问题也有疑问粗体字体样式 有时我不知道我是否以正确的方式做事 我想使用稳定版本 所以我选择了 2 1 0 版本而不是
  • 如何在 ReactJs 中加载 WebGL 顶点和片段着色器?

    让我先提出我的问题 然后分享相关细节 有没有一种方法可以在 ReactJS 中使用 加载 修复解析错误 WebGL 着色器 有可用的装载机吗 经过几个小时的努力 在谷歌上搜索了一种能够使用着色器文件 即顶点和片段着色器 的方法 我还没有找到
  • 稍后可以在领域中更改主键吗?

    我在本地设置了一个临时主键并将对象保存到领域 稍后服务器为该对象分配一个唯一键 然后我想更新该对象的主键 那么是否可以为对象重新分配主键呢 当我们为对象重新分配主键时会发生什么 它会用旧的主键保存对象吗 可以将主键的值更改为最高 Realm
  • 将文本限制为 angular.js 中的特定语言字符

    我正在使用 angular js 构建一个表单 我的表格看起来像
  • 在本机反应中打开地图/谷歌地图

    我正在尝试打开谷歌地图或我的地图react native应用 当我在 iPhone 模拟器上运行该应用程序时 我收到此错误 Don t know how to open URI 我做错了什么 My code openGps var url
  • MongoDB 中的changeStream 和tailable 游标有什么区别

    我试图确定变更流之间的区别 https docs mongodb com manual changeStreams https docs mongodb com manual changeStreams https docs mongodb
  • 如何修复 RN 突然无法找到本地模块(无法解析模块)?

    我遇到了一个奇怪的情况 突然我的 RN 应用程序无法加载任何场景 该应用程序已经运行良好数周了 我没有移动任何文件 失败 error bundling UnableToResolveError Unable to resolve modul
  • 嵌入式系统的时间戳

    我想为嵌入式系统 运行 ArchLinux 的 Raspberry Pi A 上的传感器测量添加时间戳 我发现了time from time h但它给了我 第二个 分辨率 我至少需要 毫秒 系统将运行几个小时 我不担心长时间的漂移 我怎样才
  • 什么是多态 lambda?

    lambda 匿名函数 的概念对我来说非常清楚 我知道类方面的多态性 运行时 动态分派用于根据实例的最派生类型调用适当的方法 但 lambda 到底如何才能是多态的呢 我是另一位试图了解更多有关函数式编程的 Java 程序员 您会发现我在下
  • Python HTML 抓取

    这并不是真正的抓取 我只是想在网页中找到该类具有特定值的 URL 例如 a class myClass href url 7df028f508c4685ddf65987a0bd6f22e 我想获取href值 关于如何做到这一点有什么想法吗
  • 当 var_dump 存在时中止 git 预提交钩子

    我正在尝试 但惨败 创建一个 git 预提交钩子 用于检查修改后的文件中是否存在 var dump 如果找到则退出 我遇到的问题是它似乎总是中止提交 这是我的预提交文件的内容 VAR git diff grep w var dump if
  • 使用Python脚本将数据发布到Web服务器

    我正在使用 Python 2 7 3 我正在尝试将数据发布到我的本地网络服务器 我发布的数据是我的树莓派的温度读数 我知道网址是正确的 因为如果我使用邮递员 chrome 插件 数据会成功发布 并且我会收到返回消息 在邮递员中 我只能使用表
  • .net onpaint 垂直同步

    我正在尝试使用 winforms 和 gdi 实现一些动画 但我在控件内得到了很多撕裂移动的精灵 托管 net中有没有办法让重写的Control OnPaint方法等待监视器的垂直回溯 您已经使用双缓冲了吗 如果不是 我怀疑这会消除撕裂 并
  • Groovy 进程无法与 linux shell 一起使用(grep、awk 和 ps)

    Process proc1 sh c ps ef execute Process proc2 sh c grep sleep sh execute Process proc3 sh c grep v grep execute Process
  • 我应该在 DDD 应用程序中的哪一层实现数据库查找数据的缓存?

    我正在使用 DDD 设计 WCF 服务 我有一个域服务层 它调用存储库来创建域对象 该存储库是使用 ADO Net 而不是 ORM 实现的 数据来自使用存储过程的数据库 当创建一个对象时 比如说一个地址 SP 返回一个状态 ID SP不会将
  • 将带有 Javascript 数组的对象附加到 QML ListModel 会导致 SEGFAULT

    我在 Android 上使用 QtQuick 我正在尝试将带有数组属性的 Javascript 对象附加到ListModel I use LocalStorage来存储这些数据 我从数据库中具体化的对象具有此数组属性 当我尝试将该对象附加到
  • 使用.NET WebBrowser控件,为什么Salesforce.com在用户会话失效后自动登录用户?

    我正在我的 NET 应用程序中通过 REST 登录用户 为此 我在 WebBrowser 控件构造函数中执行以下操作 string server https login salesforce com var authURI new Stri
  • 使用 windows.h 在 Visual Studio 中进行串行通信

    我是 Visual Studio 的新手 我想从 LPC2148 套件传输和接收一些数据 为此我想在 Visual Studio 中进行串行通信 我在turboC中使用了dos h Bios h 也用于相同目的 但这些用于 Turbo C
  • 每个连接有多个事务的 MySQLdb

    是否可以对多个事务使用单个 MySQLdb 连接而不关闭它们之间的连接 换句话说 是这样的 conn MySQLdb connect host 1 2 3 4 port 1234 user root passwd x db test for