如何将Django与遗留数据库集成

虽然Django最适合开发新的应用程序,但它很有可能集成到遗留数据库中。Django包含两个实用程序,以尽可能多地自动化此过程。

本文档假设您了解Django基础知识,如 tutorial .

一旦您设置了Django,您将按照这个常规过程与现有数据库集成。

给Django你的数据库参数

您需要告诉Django您的数据库连接参数是什么,数据库的名称是什么。通过编辑 DATABASES 为以下键设置和分配值 'default' 连接:

自动生成模型

Django附带了一个实用程序,名为 inspectdb 它可以通过内省现有的数据库来创建模型。您可以通过运行以下命令查看输出:

$ python manage.py inspectdb

使用标准Unix输出重定向将其保存为文件:

$ python manage.py inspectdb > models.py

这一特性意味着一种捷径,而不是确定的模型生成。见 documentation of inspectdb 更多信息。

清理完模型后,命名文件 models.py 把它放在保存你的应用程序的python包中。然后将应用程序添加到 INSTALLED_APPS 设置。

默认情况下, inspectdb 创建非托管模型。也就是说, managed = False 在模型中 Meta 类告诉Django不要管理每个表的创建、修改和删除:

class Person(models.Model):
    id = models.IntegerField(primary_key=True)
    first_name = models.CharField(max_length=70)

    class Meta:
        managed = False
        db_table = "CENSUS_PERSONS"

如果您希望允许Django管理表的生命周期,则需要更改 managed 以上选项 True (或者移除它是因为 True 是其默认值)。

安装核心Django表

接下来,运行 migrate 命令安装任何额外需要的数据库记录,如管理员权限和内容类型:

$ python manage.py migrate

测试与调整

这些是基本步骤——从这里开始,您将希望调整Django生成的模型,直到它们按照您希望的方式工作。尝试通过django数据库API访问数据,并尝试通过django的管理站点编辑对象,并相应地编辑模型文件。