将 Django 与遗留数据库集成 — Django 文档

来自菜鸟教程
Django/docs/2.2.x/howto/legacy-databases
跳转至:导航、​搜索

Django 使用旧有的数据库

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

本文档假设您了解 教程 中介绍的 Django 基础知识。

设置好 Django 后,您将按照此一般过程与现有数据库集成。

将数据库参数告诉 Django

您需要告诉 Django 您的数据库连接参数是什么,以及数据库的名称是什么。 为此,请编辑 :setting:`DATABASES` 设置并将值分配给 'default' 连接的以下键:


自动生成这些模型

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

$ python manage.py inspectdb

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

$ python manage.py inspectdb > models.py

此功能是一种快捷方式,而不是确定的模型生成。 见 :djadmin:`inspectdb 的文档 ` 想要查询更多的信息。

清理完模型后,将文件命名为 models.py 并将其放入包含您的应用程序的 Python 包中。 然后将该应用程序添加到您的 :setting:`INSTALLED_APPS` 设置中。

默认情况下,:djadmin:`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 表

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

$ python manage.py migrate

测试和调整

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