晒晒我家小院子

0%

在Django中配置mysql数据库

创建用户,并配置权限

1
2
3
4
5
6
7
8
-- 创建数据库
create database database_name default charset=utf8mb4;
-- 创建用户
create user user_name identified by 'password';
-- 配置权限
grant all on database_name.* to 'user_name'@'%';
-- 刷新权限
flush privileges;

配置mysql

settings.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
DATABASES = {
'default': { # 主机: 增删改
'ENGINE': 'django.db.backends.mysql',
'HOST': '192.168.103.210', # 数据库主机
'PORT': 3306, # 数据库端口
'USER': 'user_name', # 数据库用户名
'PASSWORD': 'password', # 数据库用户密码
'NAME': 'database_name' # 数据库名字
},
'slave': { # 从机: 查
'ENGINE': 'django.db.backends.mysql',
'HOST': '192.168.103.210', # 数据库主机
'PORT': 8306, # 数据库端口
'USER': 'user_name', # 数据库用户名
'PASSWORD': 'password', # 数据库用户密码
'NAME': 'database_name' # 数据库名字
}
}

init.py

1
2
import pymysql
pymysql.install_as_MySQLdb()

数据库路由分发

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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

settings.py

1
2
# 配置读写分离
DATABASE_ROUTERS = ['project.utils.db_router.MasterSlaveDBRouter']

配置mysql主从同步

用docker快速搭建mysql,配置主从同步

-------------本文结束感谢您的阅读-------------