zoukankan      html  css  js  c++  java
  • python Django 之 Model 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映射了数据库中的表名。

    转载自:

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

  • 相关阅读:
    dubbo-Instantiation of bean failed; nested exception is java.lang.ExceptionInInitializerError
    sqlmap基本命令
    Read-Only Tables 只读表
    Oracle Set操作
    OGG-00664
    Oracle 附加日志(supplemental log)
    Oracle 数字转为字符串 to_char()
    Oracle单引号转义符
    OGG开启DDL,约束信息和索引信息会同步过去吗
    OGG-01161
  • 原文地址:https://www.cnblogs.com/xibuhaohao/p/10210540.html
Copyright © 2011-2022 走看看