Django 使用旧有的数据库

虽然 Django 很适合开发新应用,但也能用它集成旧数据库。Django 包含了一整套套件来尽可能自动处理类似的任务。

本文假设你有 Django 基础,基础内容由 教程 介绍。

你配置完 Django 后,你就能跟着此常规操作去集成旧数据库了。

将数据库参数告诉 Django

你需要告诉 Django 数据库连接参数和数据库名称。通过编写 DATABASES 配置项并为 '默认' 连接指定下列值:

自动生成这些模型

Django 自带一个叫做 inspectdb 的工具,它可以通过内省已存在的数据库创建对应模型。你能通过运行以下命令看到输出:

$ python manage.py inspectdb

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

$ python manage.py inspectdb > models.py

该功能仅是一个快捷方式,不是最佳的创建模型的方法。参考 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'

If you do want to allow Django to manage the table's lifecycle, you'll need to change the managed option above to True (or remove it because True is its default value).

安装核心 Django 表

然后,运行 migrate 命令安装所有额外需要的数据库记录,像是后台权限和内容类型:

$ python manage.py migrate

测试和调整

这些是基本步骤——这样,你就能调整 Django 生成的模型,直到他们达到你的要求。试着通过 Django 数据库 API 访问数据,试着通过 Django 后台站点编辑数据,也可以直接编辑模型文件。