使用 django 创建数据库方案或使用 powerdesigner 创建数据库方案
use django create database scheme or use powerdesigner create database scheme
我准备用 django 开始一个新项目,它涉及一些操作 database.I 有 2 种方法来获取方案:
- 使用powerdesigner设计数据库方案并输出sql,然后使用
python manage.py inspectdb
生成模型
- 设计模型然后使用
python manage.py makemigrations
和python manage.py migrate
得到数据库方案。
有人解释一下这两种方式的区别是什么,我应该如何选择?
来自 inspectdb's 文档:
Use this if you have a legacy database with which you’d like to use
Django. The script will inspect the database and create a model for
each table within it.
如果您已经有一个可用的数据库并想在其上使用 django,那就更好了。它具有以下限制:
- If inspectdb cannot map a column’s type to a model field type, it’ll use TextField and will insert the Python comment 'This field
type is a guess.' next to the field in the generated model.
- If the database column name is a Python reserved word (such as 'pass', 'class' or 'for'), inspectdb will append '_field' to the
attribute name. For example, if a table has a column 'for', the
generated model will have a field 'for_field', with the db_column
attribute set to 'for'. inspectdb will insert the Python comment
'Field renamed because it was a Python reserved word.' next to the
field.
也是一种快捷方式,不推荐用于启动django项目。
同时编写模型,运行 makemigration
和 migrate
命令将创建包含自定义字段的数据库方案,例如:
auth_group
auth_group_permissions
auth_permission
auth_user
auth_user_groups
auth_user_user_permissions
如果你想使用django系统,这些是必不可少的authentication backend,用户模型等是django的核心部分。
我准备用 django 开始一个新项目,它涉及一些操作 database.I 有 2 种方法来获取方案:
- 使用powerdesigner设计数据库方案并输出sql,然后使用
python manage.py inspectdb
生成模型 - 设计模型然后使用
python manage.py makemigrations
和python manage.py migrate
得到数据库方案。
有人解释一下这两种方式的区别是什么,我应该如何选择?
来自 inspectdb's 文档:
Use this if you have a legacy database with which you’d like to use Django. The script will inspect the database and create a model for each table within it.
如果您已经有一个可用的数据库并想在其上使用 django,那就更好了。它具有以下限制:
- If inspectdb cannot map a column’s type to a model field type, it’ll use TextField and will insert the Python comment 'This field type is a guess.' next to the field in the generated model.
- If the database column name is a Python reserved word (such as 'pass', 'class' or 'for'), inspectdb will append '_field' to the attribute name. For example, if a table has a column 'for', the generated model will have a field 'for_field', with the db_column attribute set to 'for'. inspectdb will insert the Python comment 'Field renamed because it was a Python reserved word.' next to the field.
也是一种快捷方式,不推荐用于启动django项目。
同时编写模型,运行 makemigration
和 migrate
命令将创建包含自定义字段的数据库方案,例如:
auth_group
auth_group_permissions
auth_permission
auth_user
auth_user_groups
auth_user_user_permissions
如果你想使用django系统,这些是必不可少的authentication backend,用户模型等是django的核心部分。