如何在 django 中创建新的数据库连接

2024-04-12

我需要创建一个新的数据库连接(会话)以避免 django 事务中的 MySql 过程意外提交。如何在django中设置它?

我尝试在设置文件中复制数据库配置。它对我有用,但似乎不是一个好的解决方案。有关更多详细信息,请参阅我的代码。

@classmethod
def get_sequence_no(cls, name='', enable_transaction=False):
    """
        return the sequence no for the given key name
    """
    if enable_transaction:
        valobj = cls.objects.using('sequence_no').raw("call sp_get_next_id('%s')" % name)
        return valobj[0].current_val
    else:
        valobj = cls.objects.raw("call sp_get_next_id('%s')" % name)
        return valobj[0].current_val

有谁知道如何使用自定义数据库连接来调用该过程?


如果你看一下django.db模块,你可以看到django.db.connection是一个代理django.db.connections[DEFAULT_DB_ALIAS] and django.db.connections是一个实例django.db.utils.ConnectionHandler.

将它们放在一起,您应该能够获得如下所示的新连接:

from django.db import connections
from django.db.utils import DEFAULT_DB_ALIAS, load_backend
    

def create_connection(alias=DEFAULT_DB_ALIAS):
    connections.ensure_defaults(alias)
    connections.prepare_test_settings(alias)
    db = connections.databases[alias]
    backend = load_backend(db['ENGINE'])
    return backend.DatabaseWrapper(db, alias)

请注意,此函数每次调用时都会打开一个新连接,并且您负责关闭它。此外,它使用的 API 可能被视为内部 API,并且可能会更改,恕不另行通知。

要关闭连接,应该足以调用.close()在对象返回上create_connection功能:

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

如何在 django 中创建新的数据库连接 的相关文章

随机推荐

  • 如何找到任何活动应用程序的闪烁光标位置?

    我正在为 Mac OS 开发一个应用程序 我想找到当前应用程序的文本光标 插入符号导航 的位置 到目前为止 我已经让它请求可访问权限 并且我也可以监视 keyEvents 但是如何找到闪烁的光标位置 我不是在寻找鼠标光标位置 我想要文本光标
  • 非实例化 C++ 模板函数的语义正确性

    以下 C 代码无法编译 例如使用 g 4 7 或 clang 3 2 struct Bar template
  • 如何在Python中的多个进程之间共享字典而无需锁定

    我需要在多个进程之间共享一个巨大的字典 大小约为 1 GB 但是因为所有进程都将始终从中读取 我不需要锁定 有没有办法在不锁定的情况下共享字典 python中的多处理模块提供了一个Array类 它允许通过设置共享而无需锁定锁 假然而 多处理
  • 什么是铁轨的良好伐木替代品?

    所以 我一直在研究登录我的 Rails 应用程序 我发现 感谢像这样的帖子this https stackoverflow com questions 462651 rails logger format string configurat
  • Laravel Echo - 允许访客连接到状态通道

    我正在使用 laravel echo server 运行 Laravel Echo 来广播事件 我有一个用户计数器频道 显示应用程序上的所有用户 为此 我使用了存在通道 这对于登录用户来说效果很好 但访客永远无法连接 我在 Broadcas
  • Xml序列化顺序问题

    通常 所有这些都非常适合将我的对象序列化为 Xml 字符串 然后再序列化回对象 然而 不同最终用户之间存在这种不一致 我似乎无法追踪 基本上 当我序列化一个对象时 一旦转换为 Xml 它看起来就像这样
  • 安卓。在对话框中调用关闭

    你打电话时dismiss 在对话框上 除了隐藏它之外 它还会将其从内存中删除吗 它是否会删除放置在对话框内的所有对象 例如ImageViews Buttons等等 凭记忆吗 有没有一种方法可以让我自己释放这些对象的内存 而不是等待垃圾收集器
  • 拖动未修饰的 JFrame 并调整其大小

    目前 我正在使用以下代码来拖动和移动未装饰的 JFrame private void initialiseGUI Component component
  • 使用不同的行终止符在Python中读取csv文件

    我有一个 CSV 格式的文件 其中分隔符是 ASCII 单位分隔符 行终止符是 ASCII 记录分隔符 显然 由于这些是非打印字符 我只是使用了此处编写它们的标准方法之一 我已经编写了大量读取和写入 CSV 文件的代码 因此我的问题不在于
  • Node.js ws 包上的正确错误处理

    我正在努力将基于 REST 的数据管道替换为基于 Websocket 的数据管道 但我无法找到所有可能出错的地方 该系统是生产系统 因此如果出现故障并且无法恢复 将会发生非常糟糕的情况 这是我到目前为止所得到的 客户端 let server
  • 路径组件应该是“/”

    我正在尝试创建一个FileSystem保存 ext2 文件系统的对象 我的URI似乎无效 给我一个路径组件应该是 运行时错误 我使用的是 Windows 我的项目位于 Eclipse 中 有一个名为 fs 的子目录 用于保存文件系统映像 我
  • 如何将 Zend Framework 2 集成到 Netbeans 7.2 IDE [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Actor 中的 WebSocket.acceptWithActor 和 @Inject()(播放 2.5)

    WebSocket acceptWithActor不使用 Guice 实例化一个新的 Akka actor 在 Play 2 4 中 仍然可以通过导入来为我的 actor 使用注入器play api Play current 片段来自Rea
  • Fortran 中指数函数的 DEXP 或 EXP?

    我有两个非常简短的问题 1 我刚刚读到DEXP is the archaic的形式EXP 这是否意味着不应再使用它 我一直以为DEXP 双精度等于EXP 2 指数函数的范围是多少 它依赖于编译器吗 问题 1 在现代 Fortran 中 最好
  • 如何在magento中添加自定义模块

    您好 我想为页脚创建一个自定义模块 用于显示新闻标题 还没有使用自定义模块 我该怎么做 谁能告诉我创建自定义模块的简单步骤 Thanks 您会发现的最佳资源是 模块创建器扩展 http www magentocommerce com ext
  • 如何在android xml布局中将9个按钮放在3行中?

    我正在尝试制作一个井字游戏 android 版本 我想让所有 9 个按钮根据设备的宽度和高度自动调整大小 并将它们均匀地放在 3 3 网格中 但我现在只能设置它们的尺寸的数字 谁能告诉我如何让他们使用父母的高度和宽度并计算他们的尺寸 另外
  • 静态库 (.a) 和共享库 (.so) 之间的文件格式差异?

    我知道关于共享库和静态库的用例有很多问题 这个问题与此无关 我问的是磁盘上存储的文件格式的差异 为什么问题是 两者之间有什么区别 或者它们完全相同 只是用途不同 我相信它们是不一样的 因为在共享库上运行 nm 需要 D 标志 显然它需要做一
  • 尝试检索 Google 日历活动时 WEB_HOOK 通道不可用

    我正在尝试使用Google 日历的推送通知 https developers google com calendar v3 push 回调端点托管在 Heroku 上 应用程序名称 herokuapp com已在 Search Consol
  • 如何过滤上传对话框中可以看到哪些文件?

    在没有 ActiveXes Flash 或 Java Applet JavaScript 也可以 等客户端对象的 ASP NET MVC 应用程序中 是否可以想象当弹出上传文件对话框时 它只会显示我指定的文件 例如 在用于选择要上传的文件的
  • 如何在 django 中创建新的数据库连接

    我需要创建一个新的数据库连接 会话 以避免 django 事务中的 MySql 过程意外提交 如何在django中设置它 我尝试在设置文件中复制数据库配置 它对我有用 但似乎不是一个好的解决方案 有关更多详细信息 请参阅我的代码 class