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

如果你已经有已知的数据库及表格。
运行下面代码可以自动生成models模型文件
python manage.py inspectdb > your_app_name/models.py

或者python manage.py inspectdb  数据库表格名> your_app_name/models.py

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

https://www.cnblogs.com/4-312/p/4626060.html

DJANGO INSPECTDB

使用inspectdb  --通过已有数据库表生成 model.py
inspectdb辅助工具检查你的settings文件指向的数据库,决定你表示你的表的Django模型并打印Python模型代码到标准输出 
这里是典型的从零开始的遗留数据库处理的过程,唯一的前提是Django已经安装并且你有一个遗留数据库 
1,通过运行django-admin.py startproject mysite(这里mysite是你的项目名)创建Django项目,我们将在例子中使用mysit 
e作为项目名 
2,在项目中编辑settings文件mysite/settings.py来告诉Django你的数据库连接参数是什么以及数据库名是什么,特别的, 
你将想指定DATABASE_NAME,DATABASE_ENGINE,DATABASE_USER,DATABASE_PASSWORD,DATABASE_HOST和DATABASE_PROT设置 
3,通过运行python mysite/manage.py startapp myapp(这里myapp是你的app名)来在你的项目中创建Django app,我们这里 
将使用myapp作为项目名 
4,运行命令python mysite/manage.py inspectdb,这将检查DATABASE_NAME数据库中的表并为每个表打印模型类,看看输出 
来了解inspectdb可以做什么事情 
5,在你的app里通过使用标注shell输出重定向保存输出到models.py文件: 
python mysite/manage.py inspectdb > mysite/myapp/models.py 
6,编辑mysite/myapp/models.py文件,整理生成的模型并且做你需要的自定义,我们将在下一节对此给出一些提示

通过django的model.py 创建数据表

1.编写django创建数据库表语句

在数据库应用的models.py文件中,编写创建表语句。其中,class为表名。

2.在配置文件中配置要访问的数据库和使用的数据库应用

1)访问的数据库:

DATABASES = {

'default': {

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

'HOST': '172.18.100.3',

'NAME': 'db_resource',

'USER': 'res_admin',

'PASSWORD': 'res_admin',

}

}

2)使用的数据库应用:

INSTALLED_APPS = (

'resdb',

)

3. 运行命令,生成创建数据库表语句

Python manage.py sqlall resdb

4. 生成数据表

运行命令,根据已生成的数据库表语句生成数据表:

Python manage.py syncdb

前一篇我们说了,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

django.db = models.CharField(primary_key=True, max_length=250= models.TextField(blank=True, null== models.TextField(blank=True, null==

执行命令正向生成

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映射了数据库中的表名。

(0)

相关推荐