django中有没有什么方法可以在不创建models.py文件的情况下使用数据库?

Rah*_*tal 2 python django model

我有一个数据库,其中填充了一些数据,我想在我的新 django 应用程序中使用它。他们有什么方法在我的 django 应用程序中使用数据库数据吗?实际上我不想对我的旧数据库进行任何更改,只想使用它的数据。任何人请建议我什么是更好的方法来做到这一点。

在搜索时我还发现了一个命令 -inspectdb 它可以从数据库生成 model.py 文件,但它存在一些问题,它没有映射 model.py 中的外键,我们需要重新排列 model.py 文件中的类还有更多。所以我正在寻找其他选择。

sin*_*ger 5

您可以使用 django.db 模块中的 connection.cursor() 访问旧数据库中的数据。

如果你有两个数据库

DATABASES = {
    'default': {
        'NAME': 'new_database',
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'USER': '',
        'PASSWORD': ''
    },
    'old': {
        'NAME': 'old_database',
        'ENGINE': 'django.db.backends.mysql',
        'USER': '',
        'PASSWORD': ''
    }
}
Run Code Online (Sandbox Code Playgroud)

...

from django.db import connections
cursor = connections['old'].cursor()
cursor.execute("SELECT...")
cursor.fetchall()
Run Code Online (Sandbox Code Playgroud)

参考文档:

直接执行自定义SQL

多个数据库

但是,如果您想修改旧数据库中的数据,最好创建 models.py 文件并一如既往地使用它。是否使用inspectdb取决于你。例如,您在单独的临时项目中使用 inpsectdb 冷生成模型,使用 dumpdata 创建 json 文件并以某种方式将数据上传到活动项目。