这里我们开始说如何在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 importmodels
classAlarmGroup(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如下
classAlarmGroup(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()
classMeta:
managed=False
db_table= 'alarm_group'
这里面的db_table映射了数据库中的表名。
python manage.py inspectdb > app01\models.py
坑!!! windows下为‘\’