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

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 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)


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
27天前
|
Java 数据库连接 测试技术
SpringBoot入门 - 添加内存数据库H2
SpringBoot入门 - 添加内存数据库H2
38 3
SpringBoot入门 - 添加内存数据库H2
|
20天前
|
SQL 定位技术 数据库
深入探索Django ORM:高效数据库操作的秘诀####
本文旨在为读者揭开Django ORM(对象关系映射)的神秘面纱,通过一系列生动的比喻和详实的案例,深入浅出地讲解其核心概念、工作原理及高级特性。我们将一起探讨如何利用Django ORM简化数据库交互,提升开发效率,同时确保数据的一致性和安全性。不同于传统的技术文档,本文将以故事化的形式,带领读者在轻松愉快的氛围中掌握Django ORM的精髓。 ####
|
23天前
|
数据库连接 Linux Shell
Linux下ODBC与 南大通用GBase 8s数据库的无缝连接配置指南
本文详细介绍在Linux系统下配置GBase 8s数据库ODBC的过程,涵盖环境变量设置、ODBC配置文件编辑及连接测试等步骤。首先配置数据库环境变量如GBASEDBTDIR、PATH等,接着修改odbcinst.ini和odbc.ini文件,指定驱动路径、数据库名称等信息,最后通过catalog.c工具或isql命令验证ODBC连接是否成功。
|
1月前
|
消息中间件 资源调度 关系型数据库
如何在Flink on YARN环境中配置Debezium CDC 3.0,以实现实时捕获数据库变更事件并将其传输到Flink进行处理
本文介绍了如何在Flink on YARN环境中配置Debezium CDC 3.0,以实现实时捕获数据库变更事件并将其传输到Flink进行处理。主要内容包括安装Debezium、配置Kafka Connect、创建Flink任务以及启动任务的具体步骤,为构建实时数据管道提供了详细指导。
79 9
|
1月前
|
Java 数据库连接 测试技术
SpringBoot入门(4) - 添加内存数据库H2
SpringBoot入门(4) - 添加内存数据库H2
66 13
|
1月前
|
Java API 数据库
Django:从入门到精通
【11月更文挑战第18天】Django是一个由Python编写的高级Web应用框架,以其简洁性、安全性和高效性而闻名。Django最初由Adrian Holovaty和Simon Willison于2003年开发,旨在简化Web应用的开发过程。作为一个开放源代码项目,Django迅速吸引了大量的开发者和用户,成为了Python Web开发领域的重要工具之一。
45 1
|
1月前
|
Java 数据库连接 测试技术
SpringBoot入门(4) - 添加内存数据库H2
SpringBoot入门(4) - 添加内存数据库H2
46 4
|
1月前
|
安全 Nacos 数据库
Nacos是一款流行的微服务注册与配置中心,但直接暴露在公网中可能导致非法访问和数据库篡改
Nacos是一款流行的微服务注册与配置中心,但直接暴露在公网中可能导致非法访问和数据库篡改。本文详细探讨了这一问题的原因及解决方案,包括限制公网访问、使用HTTPS、强化数据库安全、启用访问控制、监控和审计等步骤,帮助开发者确保服务的安全运行。
45 3
|
1月前
|
PHP 数据库 数据安全/隐私保护
布谷直播源码部署服务器关于数据库配置的详细说明
布谷直播系统源码搭建部署时数据库配置明细!
|
1月前
|
Java 数据库连接 数据库
如何构建高效稳定的Java数据库连接池,涵盖连接池配置、并发控制和异常处理等方面
本文介绍了如何构建高效稳定的Java数据库连接池,涵盖连接池配置、并发控制和异常处理等方面。通过合理配置初始连接数、最大连接数和空闲连接超时时间,确保系统性能和稳定性。文章还探讨了同步阻塞、异步回调和信号量等并发控制策略,并提供了异常处理的最佳实践。最后,给出了一个简单的连接池示例代码,并推荐使用成熟的连接池框架(如HikariCP、C3P0)以简化开发。
51 2
下一篇
DataWorks