在前一篇我们说了,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 可以到配置的数据库中,查看创建成功的表
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映射了数据库中的表名。
转载自: http://www.cnblogs.com/kangoroo/p/7495880.html 来源:http://www./content-2-99201.html |
|