Django 根据数据库表反向生成 Model , 使用 inspectdb 反向生成 model 实体类 ( 可以指定表名转换 )
# python manage.py inspectdb 命令参数解释
'''
--database 数据库名:
要转换的数据库配置别名,对应 settings.py 文件里的 DATABASES 数据库配置
tablename1 tablename2:
要转换的数据表名,多个表名之间用逗号隔开,如果不加表名参数即是数据库里的全部表
app/models.py:
输出到某个应用下的文件
注意:
当项目配置了两个以上的数据库才要通过 --database ,不加 database 参数默认就是指向 default 的数据库
如果输出的文件里有内容,操作会清空原有内容再将结果写入
可以先输出到 models_temp.py 临时文件里,再将 model 类复制到 models.py 文件里
文件名路径是相对 manage.py 文件的
'''
python manage.py inspectdb --database databasename tablename1 tablename2 > app/models.py
django 全局迁移命令
# 将 Model 的改动生成文件 python manage.py make migrations # 此时数据库不生效 # 提交改动 python manage.py migrate # 此时数据库会自动生成 Model 对应的数据表
- 1
- 2
- 3
- 4
只改动的 app 下面的 Model 或者某个文件中的 Model,那就需要指定 appname 和 filename
# 生成指定 app 下面的改动文件 python manage.py makemigrations appname # 提交指定 app 下面指定的改动文件 python manage.py migrate appname filename
- 1
- 2
- 3
- 4
# 使用这条命令,会根据设置的数据库中的表在自动生成对应的 Model 代码,并打印出来
python manage.py inspectdb
# 前提是创建了 app(generation_test) 并且在 setting.py 文件中注册过
python manage.py inspectdb > generation_test/models.py
# default 是默认的别名
python manage.py inspectdb --database default > generation_test/models.py
python manage.py inspectdb --database default table1 table2 > generation_test/models.py
项目 app01 需要对 settings.py 中配置的 db1 和 db2 两个数据库, 生成 db2 数据库中表名为 user 的 models.py 文件
python manage.py inspectdb --database db2 user > app01/models.py
如果只需要类代码则去掉路径,在 **控制台 **可以看到(推荐使用,直接从控制台拷贝 model 类,添加到 models.py 文件)
python manage.py inspectdb --database db2 user