注意:我已经在 docs.djangoproject.com/en/dev/topics/db/multi-db 浏览了 Django 官方文档,但页面上没有任何内容回答我的问题。
我带领一个团队开发了两个 Django Web 应用程序,我们已经到了一个阶段,我们希望将每个站点上的功能都提供给彼此。通过这样做,我们将遵守 DRY 原则。
案例分析
站点 A 具有 A+ 功能,我希望通过 Django Queryset 在站点 B 上提供它,反之亦然。
至今
我在两个站点的 settings.py 文件中定义了数据库配置,在这篇文章的帮助下为所有应用程序添加了一个通用路由器配置:http: //diegobz.net/2011/02/10/django-database- router-using-settings/ 并且可以使用 from django.db 导入连接从两个站点成功查询 A 和 B 的数据库。但是,使用以下内容:
def dictfetchall(cursor):
"Returns all rows from a cursor as a dict"
desc = cursor.description
return[
dict(zip([col[0] for col in desc], row))
for row in cursor.fetchall()
]
我得到对象数据的列表,而不是查询集。
问题
- 这是解决上述问题的正确方法吗?
- 有没有办法使用上述实现导入/返回查询集/可迭代模型对象?
- 是否有可以处理 Django 多数据库连接的 API?如果是,请提供链接?
感谢您的时间。
我的解决方案(暂时)
看来我之前计划使用的策略有点矫枉过正。所以,我决定采用不同的策略。然而,它似乎让我半途而废,但我预见它会导致干燥。
解决方案是让两个站点上的 REST-API 以 json 格式返回数据。
即调用站点A的API,加载返回的数据并在站点B进行处理。