码迷,mamicode.com
首页 > 数据库 > 详细

数据库表反向生成 Django ORM inspectdb

时间:2020-03-31 18:49:51      阅读:70      评论:0      收藏:0      [点我收藏+]

标签:cat   setting   查看   编译   ESS   mode   password   ica   bsp   

数据库表反向生成(二) Django ORM inspectdb

这里我们开始说如何在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

标签:cat   setting   查看   编译   ESS   mode   password   ica   bsp   

原文地址:https://www.cnblogs.com/python001-vip/p/12606956.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!