hibernate4.1 mysql反向生成实体类_python Django 之 Model 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

67d0865f17d9be527254bf8a8ff6c5b4.gif

# Application definition

INSTALLED_APPS = [

'django.contrib.admin',

'django.contrib.auth',

'django.contrib.contenttypes',

'django.contrib.sessions',

'django.contrib.messages',

'django.contrib.staticfiles',

'hello',

]

67d0865f17d9be527254bf8a8ff6c5b4.gif

在settings.py中配置数据库

67d0865f17d9be527254bf8a8ff6c5b4.gif

DATABASES = {

'default': {

'ENGINE': 'django.db.backends.mysql',

'NAME': 'big_data',

'USER': 'root',

'PASSWORD': '1234',

'HOST': '10.93.84.53',

'PORT': '3306',

}

}

67d0865f17d9be527254bf8a8ff6c5b4.gif

2、正向生成

在hello app的目录下创建model.py

67d0865f17d9be527254bf8a8ff6c5b4.gif

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()

67d0865f17d9be527254bf8a8ff6c5b4.gif

执行命令正向生成

python manage.py makemigrations

python manage.py migrate

可以到配置的数据库中,查看创建成功的表

3、反向生成

现在数据库中创建表

67d0865f17d9be527254bf8a8ff6c5b4.gif

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

67d0865f17d9be527254bf8a8ff6c5b4.gif

然后执行命令,生成model.py代码

python manage.py inspectdb

生成的代码model.py如下

67d0865f17d9be527254bf8a8ff6c5b4.gif

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'

67d0865f17d9be527254bf8a8ff6c5b4.gif

这里面的db_table映射了数据库中的表名。

转载自:

http://www.cnblogs.com/kangoroo/p/7495880.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值