问题描述
我正在寻找针对以下情况的“最佳做法”指南/解决方案。
我有一个使用MysqL DB创建和管理的Django项目。我必须每隔5分钟从第二个(外部的,不是由我管理的)数据库中导入数据,以便执行某些操作。我具有外部数据库的所有权利和所有必要的信息。
我已阅读有关多个数据库使用情况的django文档:在settings.py中注册数据库,使用--database标志进行迁移,通过路由到db(简短版本)来查询/访问数据,并且对此有多个问题问题在stackoverflow上。
所以我的计划是: 在settings.py中注册第二个数据库,使用inspectdb将其添加到模型中,进行迁移,定义一个从外部数据库读取数据并将其添加到内部(自己的)数据库的方法。
但是我确实有一些疑问:
-
如果我不管理数据库并且没有写权限,该如何迁移模型?我也不需要所有表(大约250张,但只需要5张)。 (假迁移是否值得考虑?我将使用inspectdb并仅迁移必要的表。)
-
因为我只需要从外部数据库中检索数据而无需回写,那么只要有一种不断获取最新数据的方法就足够了,就像该answer中建议的第二种解决方案一样>
欢迎任何想法/想法/建议!
解决方法
我不会使用Django的ORM,而只是使用psycopg2和SQL访问数据库,将您关心的列放入dict
s中,然后使用它们。否则,对该外部数据库表的任何细微更改都可能会破坏您的Django应用程序,因为模型不再匹配。这可能会带来比ORM值得更多的头痛。