Skip to main content

将Django与旧数据库集成

虽然Django最适合开发新的应用程序,但很有可能将其集成到遗留数据库中。 Django包括几个实用程序,尽可能自动化这个过程。

本文档假设您知道Django基础知识,如 教程 中所述。

一旦你设置了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 创建非托管模型。也就是说,模型的 Meta 类中的 managed = False 告诉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的管理网站编辑对象,并相应地编辑模型文件。