資料庫表反向生成 Django ORM inspectdb
阿新 • • 發佈:2021-09-15
在前一篇我們說了,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
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映射了資料庫中的表名。
轉載出處:
https://www.cnblogs.com/kangoroo/p/7495880.html