django中是否有任何方法可以在不创建models.py文件的情况下使用数据库?

时间:2015-08-05 13:20:22

标签: python django model

我有一个数据库,其中填充了一些数据,我想在我的新django应用程序中使用它。他们在我的django应用程序中使用数据库的任何方式也是如此。实际上,我不想在旧数据库中进行任何更改,只想使用其数据。任何人请建议我做更好的方法。

在搜索时我也找到了一个命令 - inspectdb  它可以从数据库生成model.py文件,但是它们的一些问题是它没有映射到model.py中的外键,我们需要在model.py文件中重新安排我们的类等等。所以我正在寻找其他替代方案。

1 个答案:

答案 0 :(得分:2)

您可以使用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': ''
    }
}

...

from django.db import connections
cursor = connections['old'].cursor()
cursor.execute("SELECT...")
cursor.fetchall()

参考文档:

Executing custom SQL directly

Multiple databases

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