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
原文地址:https://www.cnblogs.com/zhenghuiwen/p/14566110.html