【问题标题】:using Django to query a MySQL database using the same connection as the ORM database使用 Django 查询 MySQL 数据库,使用与 ORM 数据库相同的连接
【发布时间】:2015-01-06 00:22:02
【问题描述】:

我有一个 MySQL 服务器,提供对 Django ORM 数据库和我构建的名为“STATES”的单独数据库的访问。我想查询我的 STATES 数据库中的表并将结果(通常是几行)返回给 Django 进行渲染,但我不知道最好的方法。

一种方法是直接使用 Django。也许我可以将相关表移动到 Django ORM 数据库中?这样做我很紧张,因为 STATES 数据库包含大型表(1000 万行 x 100 列),我担心删除这些数据或以其他方式将其弄乱(我对 Django 不是很有经验)。我还想我应该避免为每个查询创建单独的连接,所以我应该使用 Django 连接来查询 STATE 表?

或者,我可以将状态数据库视为存在于完全不同的服务器上。我可以导入 SQLAlchemy,创建连接,查询 STATE.table,返回结果,然后关闭该连接。

哪个更好,或者还有其他途径?

【问题讨论】:

    标签: python mysql django database orm


    【解决方案1】:

    docs 描述了如何通过在 settings.py 中将另一个数据库(“state_db”)添加到 DATABASES 来连接到多个数据库,然后我可以执行以下操作。

    from django.db import connections
    def query(lname)
        c = connections['state_db'].cursor()
        c.execute("SELECT last_name FROM STATE.table WHERE last_name=%s;",[lname])
        rows = c.fetchall()
        ...  
    

    这比我预期的要慢,但我猜这接近于最佳状态,因为它使用开放连接和 Django,而不会增加额外的复杂性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-16
      • 2019-11-08
      • 2021-04-25
      • 2014-03-06
      • 2016-12-02
      • 1970-01-01
      相关资源
      最近更新 更多