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

using Django to query a MySQL database using the same connection as the ORM database

我有一个mysql服务器,可以访问django ORM的数据库和我构建的一个名为"states"的独立数据库。我想查询状态数据库中的表,并将结果(通常是几行)返回给Django进行呈现,但我不知道最好的方法。

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

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

哪一条更好,还是有别的路?


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

1
2
3
4
5
6
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而不增加额外的复杂性。