是否可以从数据库生成django模型?

时间:2009-07-24 18:49:39

标签: database django oracle orm

我一直在家里乱搞Django和Django ORM,我必须说,我觉得它在易用性方面是最好的之一。

但是,我想知道是否可以在“反向”中使用它。

基本上我想要做的是从现有的数据库模式生成Django模型(来自不使用django并且相当陈旧的项目)。

这可能吗?

更新:有问题的数据库是Oracle

3 个答案:

答案 0 :(得分:89)

是的,使用inspectdb命令:

  

inspectdb

     

反映DATABASE_NAME设置指向的数据库中的数据库表,并将Django模型模块(models.py文件)输出到标准输出。

     

如果你有一个遗留数据库,你可以使用它来使用Django。该脚本将检查数据库并为其中的每个表创建一个模型。

     

正如您所料,创建的模型将具有表中每个字段的属性。请注意,inspectdb在其字段名称输出中有一些特殊情况:

     

[...]

答案 1 :(得分:22)

(Django 1.7.1)只需运行python manage.py inspectdb,即可为数据库中的所有表创建类,并在控制台上显示。

 $ python manage.py inspectdb

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

 $ python manage.py inspectdb > models.py

(这适用于我的mysql和django 1.9)

答案 2 :(得分:5)

我基于django的inspectdb命令实用程序创建了一个可重用的应用程序, Django Inspectdb Refactor

这会将模型从现有数据库中分解为模型文件夹内的不同文件。 这有助于在模型数量变大时管理模型。

您可以通过pip安装它:

pip install django-inspectdb-refactor

然后在settings.py中将应用注册为inspectdb_refactor

在此之后,您可以从命令行使用它:

python manage.py inspectdb_refactor --database=your_dbname_defined_in_settings --app=your_app_label

这将成功创建模型文件夹,其中所有表格都是应用程序内的不同模型文件。例如:

typical structure

可以找到更多详细信息here.