首页  /  后端技术  /  Django  /  数据库反向生成数据模型inspectdb

数据库反向生成数据模型inspectdb

 作者:白驹    来源:原创    浏览:77    日期:2021年2月24日  

数据库反向生成数据模型inspectdb

正向生成,指的是先创建model.py文件,然后通过django内置的编译器,在数据库如mysql中创建出符合model.py的表。
反向生成,指的是先在数据库中create table,然后通过django内置的编译器,生成model代码。
应用场景:
django对已有数据库进行操作
一、准备工作
1.创建django项目
python manage.py startproject testproject
2.创建app
python manage.py startapp test
3.修改配置文件
3.1.注册app
#settings.py
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'test',
]
3.2.修改数据库文件
#settings.py
DATABASES = {
'default': {
    'ENGINE': 'django.db.backends.mysql',
    'NAME': 'test',
    'HOST':'127.0.0.1',
    'PORT':3306,
    'USER':'root',
    'PASSWORD':'123'
}
}
#ps:键必须都是大写
二、反向生成数据模型
#反向生成模型
python manage.py inspectdb
#生成结果如下
# This is an auto-generated Django model module.
# You'll have to do the following manually to clean this up:
#   * Rearrange models' order
#   * Make sure each model has one field with primary_key=True
#   * Make sure each ForeignKey has `on_delete` set to the desired behavior.
#   * Remove `managed = False` lines if you wish to allow Django to create, modify, and delete the tab
le
# Feel free to rename the models, but don't rename db_table values or field names.
from django.db import models


class Test(models.Model):
    id = models.IntegerField(primary_key=True)  # AutoField?
    name = models.CharField(unique=True, max_length=80)

    class Meta:
        managed = False
        db_table = 'test'
#反向生成模型并生成文件
python manage.py inspectdb > models.py
#models.py文件内容与上面的生成结果一致。
#默认情况下,inspectdb创建非托管模型。 也就是说,在模型的Meta类中,managed = False告诉Django不要管理每个表的创建,修改和删除。如果想让Django管理表的生命周期,你需要将上面的托管选项更改为True,即将managed = False修改为managed = True。
django反向生成模型结束
  • 评论
  • 相关评论