数据库表反向生成django ORM inspectdb
Posted 扎心了老铁
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库表反向生成django ORM inspectdb相关的知识,希望对你有一定的参考价值。
在前一篇我们说了,mybatis-generator反向生成代码。
这里我们开始说如何在django中反向生成mysql model代码。
我们在展示django ORM反向生成之前,我们先说一下怎么样正向生成代码。
正向生成,指的是先创建model.py文件,然后通过django内置的编译器,在数据库如mysql中创建出符合model.py的表。
反向生成,指的是先在数据库中create table,然后通过django内置的编译器,生成model代码。
1、准备工作
创建django工程以及app
创建django工程,名字是helloworld
django-admin.py startproject helloworld
创建app,名字是test
python manage.py startapp hello
配置数据库
在settings.py的INSTALLED_APPS配置app
# Application definition INSTALLED_APPS = [ \'django.contrib.admin\', \'django.contrib.auth\', \'django.contrib.contenttypes\', \'django.contrib.sessions\', \'django.contrib.messages\', \'django.contrib.staticfiles\', \'hello\', ]
在settings.py中配置数据库
DATABASES = { \'default\': { \'ENGINE\': \'django.db.backends.mysql\', \'NAME\': \'big_data\', \'USER\': \'root\', \'PASSWORD\': \'1234\', \'HOST\': \'10.93.84.53\', \'PORT\': \'3306\', } }
2、正向生成
在hello app的目录下创建model.py
from django.db import models class AlarmGroup(models.Model): group_name = models.CharField(primary_key=True, max_length=250) group_des = models.TextField(blank=True, null=True) members = models.TextField(blank=True, null=True) timestamp = models.DateTimeField()
执行命令正向生成
python manage.py makemigrations
python manage.py migrate
可以到配置的数据库中,查看创建成功的表
3、反向生成
现在数据库中创建表
CREATE TABLE `alarm_group` ( `group_name` varchar(250) NOT NULL, `group_des` blob, `members` blob, `timestamp` datetime NOT NULL, `on_duty` blob, `leader` blob, PRIMARY KEY (`group_name`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8
然后执行命令,生成model.py代码
python manage.py inspectdb
生成的代码model.py如下
class AlarmGroup(models.Model): group_name = models.CharField(primary_key=True, max_length=250) group_des = models.TextField(blank=True, null=True) members = models.TextField(blank=True, null=True) timestamp = models.DateTimeField() class Meta: managed = False db_table = \'alarm_group\'
这里面的db_table映射了数据库中的表名。
以上是关于数据库表反向生成django ORM inspectdb的主要内容,如果未能解决你的问题,请参考以下文章
关于django操作orm的一些事--反向生成orm连接多个数据库
django 使用原生SQL语句反向生成MODELS.PY中的表结构
数据的查,改,删django orm中如何创建表关系django请求生命周期流程图路由层无名有名分组反向解析