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