本文我们研究下如何在django中反向生成mysql model代码,接下来我们看看具体介绍。
我们在展示django ORM反向生成之前,我们先说一下怎么样正向生成代码。
正向生成,指的是先创建model.py文件,然后通过django内置的编译器,在数据库如mysql中创建出符合model.py的表。
反向生成,指的是先在数据库中create table,然后通过django内置的编译器,生成model代码。
1、准备工作
创建django工程以及app
创建django工程,名字是helloworld
1
|
django - admin.py startproject helloworld |
创建app,名字是test
1
|
python manage.py startapp hello |
配置数据库
在settings.py的INSTALLED_APPS配置app
1
2
3
4
5
6
7
8
9
10
11
|
# 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中配置数据库
1
2
3
4
5
6
7
8
9
10
|
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
1
2
3
4
5
6
7
|
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() |
执行命令正向生成
1
2
|
python manage.py makemigrations python manage.py migrate |
可以到配置的数据库中,查看创建成功的表
3、反向生成
现在数据库中创建表
1
2
3
4
5
6
7
8
9
|
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代码
1
|
python manage.py inspectdb |
生成的代码model.py如下
1
2
3
4
5
6
7
8
9
|
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' |
总结
以上就是本文关于Django数据库表反向生成实例解析的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!
原文链接:http://www.cnblogs.com/kangoroo/p/7495880.html