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

dav*_*one 2 python django django-queryset

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

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

这可能吗?

Mik*_*eyn 6

您有两种选择:

  1. 无ORM:
    只需为第二个数据库安装和导入Python驱动程序(MySQLdb对于MySQL,psycopg2对于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
        }
      }
      
      Run Code Online (Sandbox Code Playgroud)
    • 使用Django ORM定义模型,不要忘记在模型中设置managed = False和更正.table_nameMeta
    • 使用查询第二个数据库 ModelInSecondDb.objects.using('second').all()
    • (可选)添加一个数据库路由器类,该类会自动将这些模型的所有查询定向到您的second数据库.