python-Django_根据数据库表反向生成Model

Django 根据数据库表反向生成 Model

简介

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 对应的数据表

只改动的 app 下面的 Model 或者某个文件中的 Model,那就需要指定 appname 和 filename

# 生成指定 app 下面的改动文件
python manage.py makemigrations appname
# 提交指定 app 下面指定的改动文件
python manage.py migrate appname filename

反向生成 Model 用法

  • 有根据 Model 自动生成数据库表的命令,那么肯定就有根据数据库表反向生成 Model 的命令
# 使用这条命令,会根据设置的数据库中的表在自动生成对应的 Model 代码,并打印出来
python manage.py inspectdb  
  • 可以直接将打印的代码导入到指定的 Model 文件
# 前提是创建了 app(generation_test) 并且在 setting.py 文件中注册过
python manage.py inspectdb > generation_test/models.py  
  • 配置多个数据库,可以配置数据库别名来指定根据哪个库中的表来生成 Model
# default 是默认的别名
python manage.py inspectdb --database default > generation_test/models.py  
  • 将指定的表生成对应的 Model
python manage.py inspectdb --database default table1 table2 > generation_test/models.py
  • 示例

项目 app01 需要对 settings.py 中配置的 db1db2 两个数据库, 生成 db2 数据库中表名为 usermodels.py 文件

python manage.py inspectdb --database db2 user  > app01/models.py

如果只需要类代码则去掉路径,在 **控制台 **可以看到(推荐使用,直接从控制台拷贝 model 类,添加到 models.py 文件)

python manage.py inspectdb --database db2 user
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

I believe I can fly~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值