Django ORM:如何查询处于只读模式且在 model.py 文件中没有引用的辅助数据库

Django ORM: How to query secondary database which is in read-only mode and no reference in model.py file

我想查询基本上是生产数据库的辅助数据库。目前我正在使用直接查询,但想使用 ORM。

我当前的 models.py 文件如下所示。此处用户提供 TABLE 名称。为简单起见,考虑 TABLE 是 "SERVER_LIST".

from django.db import connections

# Create your models here.
def my_custom_sql(TABLE):
    with connections["my_oracle"].cursor() as cursor:
        cursor.execute("select * from {0} where server = 'XYZ';".format(TABLE))
        row = cursor.fetchall()

        return row

数据库entry:setttings.py:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': 'mydatabase',
    },
    'my_oracle': {
        'ENGINE': 'django.db.backends.oracle',
        'NAME': 'xyz:1234/ABCDB',
        'USER': 'ABC',
        'PASSWORD': '1234'
    },
}

我想 运行 使用 Django ORM 进行相同的查询。有人可以帮助如何连接到辅助数据库并为此数据库创建 models.py 文件。我参考了这个 link 但它导入了 model.py 文件,我认为在我的情况下这是不可能的,因为数据库已经存在并且处于只读模式。

settings.py 文件中的 DATABASES 变量应如下所示:

DATABASES = {
    'default': DEFAULT_DB_CONFIG,
    'slave': SLAVE_DB_CONFIG,
}

并且当您使用 ORM 并想要查询 table 时,您可以使用如下所示的 using 界面:

SampleModel.objects.using('slave').all()

检查文档:https://docs.djangoproject.com/en/3.0/topics/db/multi-db/