当前位置: 首页 > news >正文

Django多数据库配置:mysql、mongo、redis、达梦

Django多数据库配置:mysql、mongo、redis、达梦

  • 一、Django多数据库配置-mysql连接
  • 二、Django多数据库配置-mongo连接
  • 三、Django多数据库配置-达梦数据库连接
  • 四、Django多数据库配置-redis连接
  • 五、Django跨应用使用其他数据库
  • 六、mysql连接池配置
  • 七、redis连接池配置
  • 八、mongo连接池配置

UV教程:Python多版本管理神器
Django教程:Django项目开发全链路:数据库操作、多环境配置、windows/linux项目部署一站式指南

一、Django多数据库配置-mysql连接

1.进入项目目录,运行 uv run python manage.py startapp mysqlDemo新建应用,未使用uv管理工具可使用python manage.py startapp mysqlDemo
在这里插入图片描述
2.修改django的setting.py文件中的DATABASES、INSTALLED_APPS配置

INSTALLED_APPS = ['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','mysqlDemo'
]
DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','NAME': 'django','USER':  'root','PASSWORD': 'root','HOST': 'localhost','PORT': '3306',}
}

3.修改mysqlDemo>models.py,新建数据模型

from django.core.validators import MaxValueValidator, MinValueValidator
from django.db import modelsclass Class(models.Model):"""班级模型字段说明:- name: 班级名称,从预定义的年级名称中选择,具有唯一性- class_code: 班级代码,对应年级编号,具有唯一性- department: 班级类型,区分理科班、文科班等不同类型- max_students: 最大学生数,限制班级容量在1-100人之间- established_date: 成立日期,记录班级成立时间- graduation_date: 预计毕业日期,可为空的毕业时间预估- is_active: 是否活跃,标识班级当前状态- head_teacher: 班主任,外键关联到用户模型,可为空- created_at: 创建时间,自动记录数据创建时间- updated_at: 更新时间,自动记录最后修改时间- description: 班级描述,可选的详细说明文本预定义数据:- class_info: 包含1-8年级的详细信息字典- name_choices: 基于class_info生成的班级名称选项- class_code_choices: 基于class_info生成的班级代码选项- department_choices: 班级类型选项列表"""class_info = {'1':{'name': '一年级','description': '一年级 - 小学起始阶段,6-7岁'},'2':{'name': '二年级','description': '二年级 - 小学基础阶段,7-8岁'},'3':{'name': '三年级','description': '三年级 - 小学巩固阶段,8-9岁'},'4':{'name': '四年级','description': '四年级 - 小学提高阶段,9-10岁'},'5':{'name': '五年级','description': '五年级 - 小学进阶阶段,10-11岁'},'6':{'name': '六年级','description': '六年级 - 小学毕业阶段,11-12岁'},'7':{'name': '七年级','description': '七年级 - 初中起始阶段(初一),12-13岁'},'8':{'name': '八年级','description': '八年级 - 初中中间阶段(初二),13-14岁'}}# 基本信息name_choices = [(v['name'], v['description']) for k, v in class_info.items()]name = models.CharField(max_length=100, choices=name_choices,verbose_name='班级名称',unique=True,db_comment='\n'.join([f'{name}{description}' for name, description in name_choices]))class_code_choices = [(k, v['name']) for k, v in class_info.items()]class_code = models.CharField(max_length=20, choices=class_code_choices, verbose_name='班级代码', unique=True,db_comment='\n'.join([f'{code}{name}' for code, name in class_code_choices]))department_choices = [('science', '理科班'),('arts', '文科班'),('commercial', '商科班'),('general', '普通班'),('experimental', '实验班'),('international', '国际班'),]department = models.CharField(max_length=20, choices=department_choices, verbose_name='班级类型',db_comment='\n'.join([f'{code}{dep}' for code, dep in department_choices]))# 容量限制max_students = models.PositiveIntegerField(default=50,validators=[MinValueValidator(1), MaxValueValidator(100)],verbose_name='最大学生数',db_comment='最大学生数:1-100人')# 时间信息established_date = models.DateField(verbose_name='成立日期')graduation_date = models.DateField(verbose_name='预计毕业日期', null=True, blank=True)is_active = models.BooleanField(default=True, verbose_name='是否活跃',db_default=True)# 元数据created_at = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')updated_at = models.DateTimeField(auto_now=True, verbose_name='更新时间')description = models.TextField(verbose_name='班级描述', blank=True)class Meta:db_table = 'class'verbose_name = '班级'verbose_name_plural = '班级管理'ordering = ['class_code', 'name']indexes = [models.Index(fields=['class_code', 'department']),models.Index(fields=['is_active']),]

4.运行uv add pymysql安装pymysql,未使用uv管理工具可使用pip install pymysql
在这里插入图片描述
5.修改setting.py同级目录下的__init__.py

import pymysqlpymysql.install_as_MySQLdb()

6.进入项目目录,依次运行下面命令,即可在对应数据库中创建模型中的数据模型(表),第一次运行会创建一些Django内置的表

 uv run python manage.py makemigrations mysqlDemo #根据模型变更创建新的数据库迁移文件,未使用uv管理工具可使用pthon manage.py makemigrations schooluv run python manage.py migrate#同步模型与数据库,未使用uv管理工具可使用python manage.py migrate

在这里插入图片描述
7.修改mysqlDemo>views.py

import json
import time
from .models import Class
from django.core import serializers
from django.core.exceptions import ValidationError
from django.http import HttpResponse, JsonResponse
from django.utils.decorators import method_decorator
from django.views import View
from django.views.decorators.csrf import csrf_exempt
from django.views.decorators.http import require_http_methods@method_decorator(csrf_exempt, name='dispatch')
@method_decorator(require_http_methods(['GET']), name='dispatch')
class AddClassView(View):def get(self, request):try:class_code = request.GET.get('code')name = Class.class_info[class_code]['name']Class.objects.create(name=name, class_code=class_code, department='science',max_students=80,established_date=time.strftime('%Y-%m-%d'))return HttpResponse('班级添加成功')except Exception as ex:
http://www.dtcms.com/a/395755.html

相关文章:

  • 图像拼接(反向拼接巨难,求指教!)
  • [免费]基于Python的深度学习音乐推荐系统(后端Django)【论文+源码+SQL脚本】
  • 南华 NHL-1 型加载减速工况法轻型柴油车烟度检测系统:技术解析与实战指南
  • 学习Java遇到的一些问题
  • 基于SpringBoot招聘信息管理系统
  • 多线程—线程通信之notifyAll()/wait()方法Demo
  • kotlin 常用函数
  • 2025年CSP-J1入门级初赛题解
  • vue3的基本指令以及对js的导入和导出
  • Linux 基础:关机与重启
  • React Native:分享Windows平台搭建react native并构建apk的操作流程和配置信息
  • EC24026露营灯警示灯芯片方案 报警声语音IC 单片机方案开发
  • 反量化的详细过程
  • C语言:实现3x3矩阵对角线求和
  • [Maven 基础课程]Maven 工程继承和聚合
  • 数据库--存储过程
  • mysql默认事务隔离级别下并发读不到最新数据解决方案
  • M3U8通用下载器
  • Vue动态组件详细用法指南
  • C#练习题——委托练习
  • 【TS4】简单的typescript练手项目
  • 前端学习手册-JavaScript函数与回调(十一)
  • Unity小游戏接入抖音敏感词检测
  • 【2025最新】01 Spring Boot 第一个小程序 for VS Code - 通过 Spring Initializr 网站创建
  • 算法面试(3)------YOLO 的核心思想是什么?YOLOv1 到 v8 的演进路线?
  • docker 部署gitlib
  • SpringBoot3.5.5版本大坑
  • Lightroom Classic 2025专业级数字照片管理与后期处理全解析
  • 交叉编译工具链
  • 前端构建工具有哪些?常用前端构建工具推荐、前端构建工具对比与最佳实践