【发布时间】:2018-09-01 15:25:54
【问题描述】:
我需要从我的 Django 应用程序中查询由另一个应用程序控制的数据库。理想情况下,我还想修改一些值。
我在 Django 中配置了一个辅助数据库连接,但由于这些表是在其他地方控制的,因此它们不能完全适合 Django 的 ORM。我宁愿在我的 Django 应用程序中进行简单的 SQL 查询。
这可能吗?
【问题讨论】:
标签: python django django-queryset
我需要从我的 Django 应用程序中查询由另一个应用程序控制的数据库。理想情况下,我还想修改一些值。
我在 Django 中配置了一个辅助数据库连接,但由于这些表是在其他地方控制的,因此它们不能完全适合 Django 的 ORM。我宁愿在我的 Django 应用程序中进行简单的 SQL 查询。
这可能吗?
【问题讨论】:
标签: python django django-queryset
你有两个选择:
无 ORM:
只需为您的第二个数据库安装和导入 Python 驱动程序(MySQLdb 用于 MySQL,psycopg2 用于 PostgreSQL 等),然后创建连接并运行纯 SQL 查询,而无需使用任何 Django。这方面的详细信息可以在各个数据库驱动程序的文档中找到。
ORM-ful:
在您的 settings.py 中添加第二个数据库:
DATABASES = {
'default': {
# your Django db settings here
},
'second': { # any name can be used
# your second db settings here
}
}
Meta 中设置 managed = False 和正确的 table_name。ModelInSecondDb.objects.using('second').all() 查询您的第二个数据库
second 数据库。【讨论】:
您可以在 django 设置中定义其他数据库配置,例如:
DATABASES = {
'default': {},
'another_db' : {
...
}
}
在 django ORM 中你可以这样做:
another_db_table.objects.using('another_db').all()
【讨论】: