zoukankan      html  css  js  c++  java
  • 数据库表反向生成(二) Django ORM inspectdb

    前一篇我们说了,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映射了数据库中的表名。

  • 相关阅读:
    298. Binary Tree Longest Consecutive Sequence
    117. Populating Next Right Pointers in Each Node II
    116. Populating Next Right Pointers in Each Node
    163. Missing Ranges
    336. Palindrome Pairs
    727. Minimum Window Subsequence
    211. Add and Search Word
    年底购物狂欢,移动支付安全不容忽视
    成为程序员前需要做的10件事
    全球首推iOS应用防破解技术!
  • 原文地址:https://www.cnblogs.com/kangoroo/p/7495880.html
Copyright © 2011-2022 走看看