我一直在家里乱搞Django和Django ORM,我必须说,我觉得它在易用性方面是最好的之一。
但是,我想知道是否可以在“反向”中使用它。
基本上我想要做的是从现有的数据库模式生成Django模型(来自不使用django并且相当陈旧的项目)。
这可能吗?
更新:有问题的数据库是Oracle
答案 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
这将成功创建模型文件夹,其中所有表格都是应用程序内的不同模型文件。例如:
可以找到更多详细信息here.