Django入门到放弃之数据库配置

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介: Django入门到放弃之数据库配置

1.配置连接MySQL数据库

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

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.配置数据库连接池

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

# 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.数据库读写分离

一主一从

修改数据库的配置文件

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.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'

    }

}

创建和配置数据库读写路由

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

# 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

配置数据库读写路由

1

DATABASE_ROUTERS = ['app01.db_router.MasterSlaveDBRouter'# 注意路径

一主多从

1

2

3

4

5

6

7

8

9

10

1.settings中添加多个salve数据库配置

2.创建和配置数据库读路由

import random

class MasterSlaveDBRouter(object):

    """数据库读写路由"""

 

    def db_for_read(self, model, **hints):

        """读"""

        salve_list = ['',''] # 存放配置salve名称的列表

        return random.choice(salve_list)


相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
4月前
|
关系型数据库 MySQL Java
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
|
4月前
|
数据库
【YashanDB知识库】数据库一主一备部署及一主两备部署时,主备手动切换方法及自动切换配置
【YashanDB知识库】数据库一主一备部署及一主两备部署时,主备手动切换方法及自动切换配置
【YashanDB知识库】数据库一主一备部署及一主两备部署时,主备手动切换方法及自动切换配置
|
3月前
|
安全 Linux 网络安全
YashanDB数据库服务端SSL连接配置
YashanDB支持通过SSL连接确保数据传输安全,需在服务端生成根证书、服务器证书及DH文件,并将根证书提供给客户端以完成身份验证。服务端配置包括使用OpenSSL工具生成证书、设置SSL参数并重启数据库;客户端则需下载根证书并正确配置环境变量与`yasc_env.ini`文件。注意:启用SSL后,所有客户端必须持有根证书才能连接,且SSL与密码认证独立运行。
|
3月前
|
Java 关系型数据库 MySQL
JDK、Tomcat、MariaDB数据库和Profile多环境的配置与使用
以上就是JDK、Tomcat、MariaDB数据库和Profile多环境的配置与使用的基本步骤。这些步骤可能会因为你的具体需求和环境而有所不同,但是基本的思路是一样的。希望这些信息能够帮助你更好地理解和使用这些工具。
111 17
|
4月前
|
SQL 关系型数据库 网络安全
Navicat Premium 17 最新版下载与配置:5分钟完成企业级数据库工具部署
Navicat Premium 17 是一款支持多种主流数据库(如 MySQL、Oracle、PostgreSQL 等)的多数据库管理工具,提供可视化数据建模、SQL 编辑和数据同步等功能。试用版提供 14 天全功能体验,商业版支持跨平台使用。安装环境要求 Windows 10/11 或 macOS 12.0+,最低配置为 4GB 内存。下载并解压安装包后,按步骤启动安装程序、接受许可协议、自定义安装路径并完成安装。首次运行时需激活许可证并配置数据库连接。常见问题包括无法写入注册表、试用期续费及连接数据库权限问题。高级功能涵盖 SSH 通道加速、自动化任务调度和性能调优建议。
1152 19
|
3月前
|
Oracle 关系型数据库 Linux
YashanDB异构数据库链接配置
本指南介绍在YashanDB中配置异构数据库链接(DBLINK)的方法,特别是连接至Oracle数据库的前置要求与步骤。需确保YashanDB服务端安装plugin插件包、Oracle Instant Client及libaio库,否则可能导致错误或进程崩溃。文档还提供了Oracle Instant Client和libaio库的具体安装指导,帮助管理员顺利完成配置。
|
22天前
|
人工智能 运维 关系型数据库
数据库运维:mysql 数据库迁移方法-mysqldump
本文介绍了MySQL数据库迁移的方法与技巧,重点探讨了数据量大小对迁移方式的影响。对于10GB以下的小型数据库,推荐使用mysqldump进行逻辑导出和source导入;10GB以上可考虑mydumper与myloader工具;100GB以上则建议物理迁移。文中还提供了统计数据库及表空间大小的SQL语句,并讲解了如何使用mysqldump导出存储过程、函数和数据结构。通过结合实际应用场景选择合适的工具与方法,可实现高效的数据迁移。
161 1
|
2月前
|
负载均衡 算法 关系型数据库
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
本文聚焦 MySQL 集群架构中的负载均衡算法,阐述其重要性。详细介绍轮询、加权轮询、最少连接、加权最少连接、随机、源地址哈希等常用算法,分析各自优缺点及适用场景。并提供 Java 语言代码实现示例,助力直观理解。文章结构清晰,语言通俗易懂,对理解和应用负载均衡算法具有实用价值和参考价值。
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
|
2月前
|
存储 关系型数据库 MySQL
大数据新视界 --面向数据分析师的大数据大厂之 MySQL 基础秘籍:轻松创建数据库与表,踏入大数据殿堂
本文详细介绍了在 MySQL 中创建数据库和表的方法。包括安装 MySQL、用命令行和图形化工具创建数据库、选择数据库、创建表(含数据类型介绍与选择建议、案例分析、最佳实践与注意事项)以及查看数据库和表的内容。文章专业、严谨且具可操作性,对数据管理有实际帮助。
大数据新视界 --面向数据分析师的大数据大厂之 MySQL 基础秘籍:轻松创建数据库与表,踏入大数据殿堂