我需要从我的Django应用程序查询由另一个应用程序控制的数据库。理想情况下,我还想修改一些值。
我已经在Django中配置了一个辅助数据库连接,但因为这些表是在别处控制的,所以它们并不适合Django的ORM。我宁愿在我的Django应用程序中进行简单的SQL查询。
这可能吗?
您有两种选择:
MySQLdb
for MySQL,psycopg2
for PostgreSQL等),然后创建连接并运行纯SQL查询而不使用任何Django。有关详细信息,请参阅各自数据库驱动程序的文档。settings.py
中添加第二个数据库:
DATABASES = {
'default': {
# your Django db settings here
},
'second': { # any name can be used
# your second db settings here
}
}
使用Django ORM定义模型,不要忘记在模型的managed = False
中设置table_name
和正确的Meta
。
使用ModelInSecondDb.objects.using('second').all()
查询您的第二个数据库
(可选)添加一个数据库路由器类,它会自动将这些模型的所有查询定向到second
db。您可以在django设置中定义另一个数据库配置,例如:
DATABASES = {
'default': {},
'another_db' : {
...
}
}
在django ORM你可以这样做:
another_db_table.objects.using('another_db').all()