我可以在没有ORM的情况下从Django查询辅助数据库吗?

问题描述 投票:1回答:2

我需要从我的Django应用程序查询由另一个应用程序控制的数据库。理想情况下,我还想修改一些值。

我已经在Django中配置了一个辅助数据库连接,但因为这些表是在别处控制的,所以它们并不适合Django的ORM。我宁愿在我的Django应用程序中进行简单的SQL查询。

这可能吗?

python django django-queryset
2个回答
5
投票

您有两种选择:

  1. ORM少: 只需安装并导入第二个数据库的Python驱动程序(MySQLdb for MySQL,psycopg2 for PostgreSQL等),然后创建连接并运行纯SQL查询而不使用任何Django。有关详细信息,请参阅各自数据库驱动程序的文档。
  2. ORM-FUL: 在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。

0
投票

您可以在django设置中定义另一个数据库配置,例如:

DATABASES = {
  'default': {},
  'another_db' : {
    ...
  }
}

在django ORM你可以这样做:

another_db_table.objects.using('another_db').all()

check out django docs here

© www.soinside.com 2019 - 2024. All rights reserved.