【发布时间】:2010-11-13 20:21:40
【问题描述】:
我一直在家里玩弄 Django 和 Django ORM,我不得不说,就易用性而言,我觉得它是目前最好的之一。
但是,我想知道是否可以“反向”使用它。
基本上我想做的是从现有的数据库模式(从一个不使用 django 并且相当老的项目)生成 Django 模型。
这可能吗?
更新:有问题的数据库是 Oracle
【问题讨论】:
标签: database django oracle orm
我一直在家里玩弄 Django 和 Django ORM,我不得不说,就易用性而言,我觉得它是目前最好的之一。
但是,我想知道是否可以“反向”使用它。
基本上我想做的是从现有的数据库模式(从一个不使用 django 并且相当老的项目)生成 Django 模型。
这可能吗?
更新:有问题的数据库是 Oracle
【问题讨论】:
标签: database django oracle orm
是的,使用inspectdb 命令:
检查数据库
检查 DATABASE_NAME 设置指向的数据库中的数据库表,并将 Django 模型模块(models.py 文件)输出到标准输出。
如果您有想要使用 Django 的旧数据库,请使用此选项。该脚本将检查数据库并为其中的每个表创建一个模型。
如您所料,创建的模型将为表中的每个字段提供一个属性。请注意,inspectdb 在其字段名输出中有一些特殊情况:
[...]
【讨论】:
dev 版本(更强调??也许不是..)
(Django 1.7.1) 只需运行python manage.py inspectdb 将为数据库中的所有表创建类并显示在控制台上。
$ python manage.py inspectdb
使用标准 Unix 输出重定向将其保存为文件:
$ python manage.py inspectdb > models.py
(这适用于我的 mysql 和 django 1.9)
【讨论】:
我基于 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.
【讨论】:
get_meta() missing 1 required positional argument: 'is_partition'。使用 django 2.0