Django中反向生成models

咱们在展现django ORM反向生成以前,咱们先说一下怎么样正向生成代码。python

正向生成,指的是先建立model.py文件,而后经过django内置的编译器,在数据库如mysql中建立出符合model.py的表。mysql

反向生成,指的是先在数据库中create table,而后经过django内置的编译器,生成model代码。sql

一 准备工做

建立django工程以及app数据库

建立django工程,名字是helloworlddjango

django-admin.py startproject helloworld

建立app,名字是testsession

python manage.py startapp hello

配置数据库app

在settings.py的INSTALLED_APPS配置appspa

# 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中配置数据库code

DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'big_data', 'USER': 'root', 'PASSWORD': '1234', 'HOST': '10.93.84.53', 'PORT': '3306', } }

二 正向生成

在hello app的目录下建立model.pyblog

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

三 反向生成ORM

先在数据库中建立表

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`) ) ENGIN

而后执行命令,生成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'

将代码导入到项目中

python manage.py inspectdb > hello/models.py

根据表名生成

python manage.py inspectdb school_schoolinfo
相关文章
相关标签/搜索