Django入门到放弃之数据库配置
2022/8/30 2:24:58
本文主要是介绍Django入门到放弃之数据库配置,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1.配置连接MySQL数据库
settings: DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'homework1009', 'USER': 'root', 'PASSWORD': 'xxxxx', 'HOST': '192.168.1.128', 'PORT': '3306', 'DEFAULT_CHARSET':'utf-8', 'OPTIONS': { 'init_command': 'SET sql_mode=STRICT_TRANS_TABLES', } } } # 注意设置MySQL数据库为utf8 项目同名目录__init__.py import pymysql pymysql.install_as_MySQLdb()
2.配置数据库连接池
# sql_pool.py import pymysql # from DBUtils.PooledDB import PooledDB 1.x版本使用 from dbutils.pooled_db import PooledDB # 2.x版本使用 POOL = PooledDB( creator=pymysql, # 使用链接数据库的模块 maxconnections=6, # 连接池允许的最大连接数,0和None表示不限制连接数 mincached=2, # 初始化时,链接池中至少创建的空闲的链接,0表示不创建 maxcached=5, # 链接池中最多闲置的链接,0和None不限制 maxshared=3, # 链接池中最多共享的链接数量,0和None表示全部共享。PS: 无用,因为pymysql和MySQLdb等模块的 threadsafety都为1,所有值无论设置为多少,_maxcached永远为0,所以永远是所有链接都共享。 blocking=True, # 连接池中如果没有可用连接后,是否阻塞等待。True,等待;False,不等待然后报错 maxusage=None, # 一个链接最多被重复使用的次数,None表示无限制 setsession=[], # 开始会话前执行的命令列表。 ping=0, # ping MySQL服务端,检查是否服务可用。 host='127.0.0.1', # 以下配置也可单独在配置文件中配置 port=3306, user='root', password='123', database='luffy', charset='utf8' ) # app.py from sql_pool import POOL conn = POOL.connection() # 从连接池种取一个链接(如果没有,阻塞在这) curser = conn.cursor() curser.execute('select * from luffy_order where id<2') res=curser.fetchall() print(res)
3.数据库读写分离
一主一从
修改数据库的配置文件
DATABASES = { 'default': { # 写(主机) 'ENGINE': 'django.db.backends.mysql', # 数据库引擎 'HOST': '192.168.103.158', # 数据库主机 'PORT': 3306, # 数据库端口 'USER': 'admin', # 数据库用户名 'PASSWORD': '111111', # 数据库用户密码 'NAME': 'robot' # 数据库名字 }, 'slave': { # 读(从机) 'ENGINE': 'django.db.backends.mysql', 'HOST': '192.168.103.158', 'PORT': 8306, 'USER': 'root', 'PASSWORD': '222222', 'NAME': 'robot' } }
创建和配置数据库读写路由
# app01/db_router.py class MasterSlaveDBRouter(object): """数据库读写路由""" def db_for_read(self, model, **hints): """读""" return "slave" def db_for_write(self, model, **hints): """写""" return "default" def allow_relation(self, obj1, obj2, **hints): """是否运行关联操作""" return True
配置数据库读写路由
DATABASE_ROUTERS = ['app01.db_router.MasterSlaveDBRouter'] # 注意路径
一主多从
1.settings中添加多个salve数据库配置 2.创建和配置数据库读路由 import random class MasterSlaveDBRouter(object): """数据库读写路由""" def db_for_read(self, model, **hints): """读""" salve_list = ['',''] # 存放配置salve名称的列表 return random.choice(salve_list)
这篇关于Django入门到放弃之数据库配置的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-20go-zero 框架的 RPC 服务 启动start和停止 底层是怎么实现的?-icode9专业技术文章分享
- 2024-12-19Go-Zero 框架的 RPC 服务启动和停止的基本机制和过程是怎么实现的?-icode9专业技术文章分享
- 2024-12-18怎么在golang中使用gRPC测试mock数据?-icode9专业技术文章分享
- 2024-12-15掌握PageRank算法核心!你离Google优化高手只差一步!
- 2024-12-15GORM 中的标签 gorm:"index"是什么?-icode9专业技术文章分享
- 2024-12-11怎么在 Go 语言中获取 Open vSwitch (OVS) 的桥接信息(Bridge)?-icode9专业技术文章分享
- 2024-12-11怎么用Go 语言的库来与 Open vSwitch 进行交互?-icode9专业技术文章分享
- 2024-12-11怎么在 go-zero 项目中发送阿里云短信?-icode9专业技术文章分享
- 2024-12-11怎么使用阿里云 Go SDK (alibaba-cloud-sdk-go) 发送短信?-icode9专业技术文章分享
- 2024-12-10搭建个人博客网站之一、使用hugo创建个人博客网站