• python框架django的数据库的正向生成和反向生成


    正向生成,指的是先创建model.py文件,然后通过django内置的编译器,在数据库如mysql中创建出符合model.py的表。

    反向生成,指的是先在数据库中create table,然后通过django内置的编译器,生成model代码。

    首先创建django工程以及app

    创建django工程,名字是wechat

    django-admin.py startproject wechat
    

    然后生成app

    python manage.py startapp datatest
    

    配置app以及数据库

    配置app(在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',
        'datatest',
    ]

    配置数据库(在settings.py中配置数据库)

    # 这是MySQL的配置连接方式,其他数据库在这个配置代码的上方有个地址
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.postgresql',
            'NAME': 'jmj',
            'USER': 'root',
            'PASSWORD': 'root',
            'HOST': '127.0.0.1',
            'PORT': '3306',
        }
    }

    正向生成

    在datatest app的目录下创建model.py

    1.  
      from django.db import models
    2.  
       
    3.  
      class AlarmGroup(models.Model):
    4.  
      group_name = models.CharField(primary_key=True, max_length=250)
    5.  
      group_des = models.TextField(blank=True, null=True)
    6.  
      members = models.TextField(blank=True, null=True)
    7.  
      timestamp = models.DateTimeField()

      执行正向生成命令

    python manage.py makemigrations
    python manage.py migrate

    反向生成

    首先在数据库中创建表

    DROP TABLE IF EXISTS `user`;
    CREATE TABLE `user`  (
      `id` int(5) NOT NULL AUTO_INCREMENT,
      `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
      `tel` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
      `dept` int(5) NOT NULL,
      `wechatid` int(255) NULL DEFAULT NULL,
      PRIMARY KEY (`id`) USING BTREE,
      INDEX `fk_user_dept`(`dept`) USING BTREE,
      CONSTRAINT `fk_user_dept` FOREIGN KEY (`dept`) REFERENCES `dept` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT
    ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;

    然后执行命令,生成model.py代码

    python manage.py inspectdb
  • 相关阅读:
    全字母短句
    java 遍历map的方法
    实现num1、num2交换,无中间变量
    N多条短信,用什么算法从中找出相似内容的来?
    Linux基础_磁盘分区
    Linux基础_软链接,硬链接
    Linux基础_系统启动流程
    Linux基础_合并,归档,压缩,dump,编辑器
    Linux基础_Linux操作系统简介
    计算机基础_操作系统
  • 原文地址:https://www.cnblogs.com/zhenghuiwen/p/14566110.html
Copyright © 2020-2023  润新知