• 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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    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 用法

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

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

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

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

    python manage.py inspectdb --database db2 user
    
    • 1
  • 相关阅读:
    【Linux】线程的几种退出方法(知识点小记)
    PHP - AJAX 与 PHP
    技术人员如何有效进行各种职场排挤、防止被排挤?
    数据结构ArrayList
    Linux编程:定时器setitimer
    android 关于admob聚合applovin的坑
    Java后端架构技术面试汇总:基础+设计模式+MySQL+分布式+微服务等
    JSRPC的三种实现方式
    ICG-PEG-NHS,吲哚菁绿-聚乙二醇-活性酯,ICG-PEG2000-NHS
    理解 Linux 文件权限
  • 原文地址:https://blog.csdn.net/qq_31455841/article/details/127127746