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



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

我当前的 models.py 文件如下所示。此处用户提供表名。为简单起见,考虑 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

数据库条目: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 文件。我参考此链接,但它导入 model.py 文件,我认为这在我的情况下是不可能的,因为数据库已经存在并且处于只读模式。

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

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

当你使用ORM并想要查询表时,你可以使用如下using界面:

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

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

最新更新