使用Django使用与ORM数据库相同的连接查询MySQL数据库

时间:2014-11-09 17:49:07

标签: python mysql django database orm

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

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

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

哪个更好,还是有其他路径?

1 个答案:

答案 0 :(得分:1)

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

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而没有增加额外的复杂性。