Django 手把手教你搭建MYSQL多数据源 实现读写分离

目录

一、创建3.2版本的Django项目

二、配置MYSQL多数据源

三、实现读写分离


一、创建3.2版本的Django项目

第一步:创建虚拟环境

第二步:打开终端安装django

pip install django==3.2

第三步:创建项目

django-admin startproject django_readwrite .

第四步:添加django服务

第五步:启动django服务测试

二、配置MYSQL多数据源

第一步:创建apps/account用来管理用户相关业务

右键创建apps/account目录

输入命令创建app:

python manage.py startapp account apps/account

右键创建urls.py用作路由:

打开apps.py文件,将代码修改:

注册app组件,打开settings.py

第二步:安装MYSQL相关包

pip install pymysqlpip install mysqlclient

第三步:_init_.py文件加入如下代码

import pymysql
pymysql.install_as_MySQLdb()

第四步:settings.py配置MYSQL数据库信息

DATABASES = {"default": {'ENGINE': 'django.db.backends.mysql','NAME': 'django-readwrite',  # 数据库名字'USER': 'root','PASSWORD': 'root','HOST': '127.0.0.1',  # ip'PORT': 3306},"bak": {'ENGINE': 'django.db.backends.mysql','NAME': 'django-readwrite-bak',  # 数据库名字'USER': 'root','PASSWORD': 'root','HOST': '127.0.0.1',  # ip'PORT': 3306},
}

第五步:手动创建两个库

第六步:models.py中创建实体类

from django.db import modelsclass UserInfo(models.Model):name = models.CharField(verbose_name="姓名", max_length=32)age = models.IntegerField(verbose_name="年龄")

第七步:生成表

python manage.py makemigrations    # 找到所有已注册的app中的models.py中的类读取 -> migrations配置python manage.py migrate --database=default
python manage.py migrate --database=bak

现在两个库都有相同的表了,我们创建的实体类对应的表是account_userinfo。

第八步:编写方法访问数据库

打开account/views.py

from django.shortcuts import render, HttpResponse
from apps.account import models# 获取用户(读操作)
def getUser(request):users = models.UserInfo.objects.using("bak").all()for user in users:print(user.name)return HttpResponse('获取用户')# 创建用户(写操作)
def createUser(request):models.UserInfo.objects.using("default").create(name="编程抗氧化", age=20)return HttpResponse('创建用户')

第九步:编写路由

django_readwrite/urls.py

from django.urls import path, includeurlpatterns = [path('account/', include("apps.account.urls")),
]

account/urls.py

from django.urls import path
from apps.account import viewsurlpatterns = [path('getUser/', views.getUser),path('createUser/', views.createUser),
]

三、实现读写分离

第一步:项目右键创建utils目录,目录下创建router.py文件

class DemoRouter(object):# 读操作都走bak数据库def db_for_read(self, model, **hints):return "bak"# 写操作都走default数据库def db_for_write(self, model, **hints):return "default"

第二步:settings.py配置此路由文件

DATABASE_ROUTERS = ['utils.router.DemoRouter']

第三步:启动服务测试

访问:http://127.0.0.1:8000/account/createUser/

这时我们手动为从库添加一条数据用来测试读取。

再访问:http://127.0.0.1:8000/account/getUser/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/641610.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

windows用msvc编译opencv、opencv-python、opencv_contrib、cuda

如要用mingw编译opencv,参考我另外一篇文章https://blog.csdn.net/weixin_44733606/article/details/135741806。 如要用Ubuntu编译opencv,参考我另外一篇文章https://blog.csdn.net/weixin_44733606/article/details/131720128。 一、安装VS2022&…

夜视成像应用激光照明方法

在夜视成像领域,激光照明的使用主要集中在提高成像质量和远距离观察上。 以下是几种用于夜视成像的激光照明方法: 直接激光照明: 这种方法涉及直接用激光光束照射目标。激光器发出的光束可以是可见光或红外光,具体取决于应用需求和…

elastic search入门

参考1:Elastic Search 入门 - 知乎 参考2:Ubuntu上安装ElasticSearch_ubuntu elasticsearch-CSDN博客 1、ElasticSearch安装 1.1安装JDK,省略,之前已安装过 1.2创建ES用户 创建用户:sudo useradd esuser 设置密码&…

仿真机器人-深度学习CV和激光雷达感知(项目2)day03【机器人简介与ROS基础】

文章目录 前言机器人简介机器人应用与前景机器人形态机器人的构成 ROS基础ROS的作用和特点ROS的运行机制ROS常用命令 前言 💫你好,我是辰chen,本文旨在准备考研复试或就业 💫本文内容是我为复试准备的第二个项目 💫欢迎…

【vue3】GSAP在vue中的使用

一、获取GSAP npm install gsap 二、开始GSAP 导入GSAP,如果需要导入gsap的插件可以参考这里。 import gasp from gsap; 这里用的是选项式,在methods属性中创建一个方法用来写gsap的动画。 gasp_animation(){let tl gasp.timeline({defaults:{ ease:&…

【zlm】针对单个设备的码率的设置

目录 代码修改 实验数据一 实验数据二 同时拉一路视频后 修改记录 使用方法 代码修改 要被子类引用 ,所以放在protected 不能放private 下面的结论,可以在下面的实验数据里引用。“同时拉一路视频后” 实验数据一 https://10.60.3.45:10443/index…

php学习

php基础语法 一 php程序 1.php标记 开始标记<?php 和结束标记 ?>中间写 PHP 代码 当解析一个文件时&#xff0c;PHP 会寻找起始和结束标记&#xff0c;也就是告诉php 开始和停止解析二者之间的代码。此种解析方式使得PHP 可以被嵌入到各种不同的文档中去&#xff…

使用PSIM软件生成DSP28335流水灯程序

最近在学习DSP28335芯片&#xff0c;然后在使用PSIM仿真软件时发现这个仿真软件也支持28335芯片&#xff0c;于是就想学习下如何在PSIM软件中使用DSP28335芯片。在PSIM自带的官方示例中有使用DSP28335芯片的相关例子。 工程下载链接 https://download.csdn.net/download/qq_20…

图解CART分类树评估器的参数

图解CART分类树评估器的参数

联邦学习:密码学 + 机器学习 + 分布式 实现隐私计算,破解医学界数据孤岛的长期难题

联邦学习&#xff1a;密码学 机器学习 分布式 提出背景&#xff1a;数据不出本地&#xff0c;又能合力干大事联邦学习的问题 分布式机器学习&#xff1a;解决大数据量处理的问题横向联邦学习&#xff1a;解决跨多个数据源学习的问题纵向联邦学习&#xff1a;解决数据分散在多…

(一)SpringBoot3---尚硅谷总结

目录 示例Demo&#xff1a; 1、我们先来创建一个空工程&#xff1a; 2、我们通过Maven来创建一个Module&#xff1a; 3、让此Maven项目继承父项目: 4、导入web开发的场景启动器 5、创建Springboot项目的主入口程序&#xff1a; 6、举例测试&#xff1a; 7、Springboot还能…

020-信息打点-红蓝队自动化项目资产侦察企查产权武器库部署网络空间

020-信息打点-红蓝队自动化项目&资产侦察&企查产权&武器库部署&网络空间 #知识点&#xff1a; 1、工具项目-红蓝队&自动化部署 2、工具项目-自动化侦查收集提取 3、工具项目-综合&网络空间&信息 演示案例&#xff1a; ➢自动化-武器库部署-F8x ➢自…

leetcode—图 岛屿数量

岛屿数量 给你一个由 1&#xff08;陆地&#xff09;和 0&#xff08;水&#xff09;组成的的二维网格&#xff0c;请你计算网格中岛屿的数量。 岛屿总是被水包围&#xff0c;并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。 此外&#xff0c;你可以假设该网…

RabbitMQ入门篇【图文并茂,超级详细】

&#x1f973;&#x1f973;Welcome 的Huihuis Code World ! !&#x1f973;&#x1f973; 接下来看看由辉辉所写的关于Docker的相关操作吧 目录 &#x1f973;&#x1f973;Welcome 的Huihuis Code World ! !&#x1f973;&#x1f973; 前言 1.什么是MQ 2.理解MQ 3.生活…

记一个奇怪的万能密码

前言 打的站点打多了&#xff0c;什么奇怪的问题都会发生 打点 开局一个登录框 用户枚举到账号爆破 测了一下&#xff0c;没发现admin的弱口令&#xff0c;但是发现存在用户枚举漏洞&#xff0c;因此准备跑一下账号 输入密码为123456 进行账号爆破 成功爆破出账号 是的…

【ARM 嵌入式 编译系列 7.3 -- GCC 链接脚本中 DISCARD 与 .ARM.exidx】

请阅读【嵌入式开发学习必备专栏 之 ARM GCC 编译专栏】 文章目录 背景.ARM.exidx方法一:使用链接器脚本方法二:使用链接器选项注意事项背景 在移植 RT-Thread 到 cortex-m33(RA4M2)上的时候,在编译的时候遇到下面问题: Building target: ra4m2.elf arm

PyTorch视觉工具箱:图像变换与上采样技术详解(1)

目录 Pytorch中Vision functions详解 pixel_shuffle 用途 用法 使用技巧 注意事项 参数 数学理论公式 示例代码及输出 pixel_unshuffle 用途 用法 使用技巧 注意事项 参数 数学理论公式 示例代码及输出 pad 用途 用法 使用技巧 注意事项 参数 示例代码…

智能机器人与旋量代数(9)

Chapt 3. 螺旋运动与旋量代数 3.1 螺旋运动 螺旋运动是关于一条空间直线的一个旋转运动&#xff0c;并伴随沿此直线的一个平移。是一种刚体绕空间轴 s s s旋转 θ \theta θ角&#xff0c;再沿该轴平移距离 d d d的复合运动&#xff0c;类似螺母沿螺纹做进给运动的情形。 一…

2024年【焊工(初级)】考试内容及焊工(初级)新版试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 焊工&#xff08;初级&#xff09;考试内容参考答案及焊工&#xff08;初级&#xff09;考试试题解析是安全生产模拟考试一点通题库老师及焊工&#xff08;初级&#xff09;操作证已考过的学员汇总&#xff0c;相对有…

docker 使用 vcs/2018 Verdi等 eda 软件

好不容易在ubuntu 安装好了eda软件&#xff0c;转眼就发现了自己的无知。 有博主几年前就搞定了docker上的EDA工具。而且更全&#xff0c;更简单。只恨自己太无知啊。 Synopsys EDA Tools docker image - EDA资源使用讨论 - EETOP 创芯网论坛 (原名&#xff1a;电子顶级开发网…