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

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


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
14天前
|
存储 SQL 分布式数据库
OceanBase 入门:分布式数据库的基础概念
【8月更文第31天】在当今的大数据时代,随着业务规模的不断扩大,传统的单机数据库已经难以满足高并发、大数据量的应用需求。分布式数据库应运而生,成为解决这一问题的有效方案之一。本文将介绍一款由阿里巴巴集团自主研发的分布式数据库——OceanBase,并通过一些基础概念和实际代码示例来帮助读者理解其工作原理。
63 0
|
8天前
|
SQL 关系型数据库 分布式数据库
PolarDB Proxy配置与优化:提升数据库访问效率
【9月更文挑战第6天】PolarDB是阿里云推出的高性能分布式关系型数据库,PolarDB Proxy作为其关键组件,位于客户端与PolarDB集群间,负责SQL请求的解析与转发,并支持连接池管理、SQL过滤及路由规则等功能。本文详细介绍了PolarDB Proxy的配置方法,包括连接池、负载均衡和SQL过滤设置,并探讨了监控调优、缓存及网络优化策略,以帮助提升数据库访问效率。
20 1
|
13天前
|
Java 数据库连接 数据库
数据库以及其他项目配置
该项目配置了数据库连接和MyBatis设置,并解决了配置文件加载问题。启动类使用 `@SpringBootApplication` 注解,可通过 `@ComponentScan` 指定扫描包。Lombok 自动生成 getter/setter 等方法,简化代码。Result 实体类用于统一返回格式。用户模块包括注册与登录功能,使用 MD5 加密密码、Spring Validation 参数校验及 JWT 认证。JWT 工具类处理令牌生成与解析,并通过拦截器验证。Redis 优化登录功能,利用 ThreadLocal 存储用户信息。此外,还包括文章模块的相关功能,如文章分类管理、
33 2
|
13天前
|
SQL Java OLAP
Hologres 入门:实时分析数据库的新选择
【9月更文第1天】在大数据和实时计算领域,数据仓库和分析型数据库的需求日益增长。随着业务对数据实时性要求的提高,传统的批处理架构已经难以满足现代应用的需求。阿里云推出的 Hologres 就是为了解决这个问题而生的一款实时分析数据库。本文将带你深入了解 Hologres 的基本概念、优势,并通过示例代码展示如何使用 Hologres 进行数据处理。
62 2
|
1天前
|
SQL 关系型数据库 MySQL
MySQL技术安装配置、数据库与表的设计、数据操作解析
MySQL,作为最流行的关系型数据库管理系统之一,在WEB应用领域中占据着举足轻重的地位。本文将从MySQL的基本概念、安装配置、数据库与表的设计、数据操作解析,并通过具体的代码示例展示如何在实际项目中应用MySQL。
6 0
|
14天前
|
Java 数据库连接 数据库
告别繁琐 SQL!Hibernate 入门指南带你轻松玩转 ORM,解锁高效数据库操作新姿势
【8月更文挑战第31天】Hibernate 是一款流行的 Java 持久层框架,简化了对象关系映射(ORM)过程,使开发者能以面向对象的方式进行数据持久化操作而无需直接编写 SQL 语句。本文提供 Hibernate 入门指南,介绍核心概念及示例代码,涵盖依赖引入、配置文件设置、实体类定义、工具类构建及基本 CRUD 操作。通过学习,你将掌握使用 Hibernate 简化数据持久化的技巧,为实际项目应用打下基础。
35 0
|
14天前
|
API 数据库 开发者
【独家揭秘】Django ORM高手秘籍:如何玩转数据模型与数据库交互的艺术?
【8月更文挑战第31天】本文通过具体示例详细介绍了Django ORM的使用方法,包括数据模型设计与数据库操作的最佳实践。从创建应用和定义模型开始,逐步演示了查询、创建、更新和删除数据的全过程,并展示了关联查询与过滤的技巧,帮助开发者更高效地利用Django ORM构建和维护Web应用。通过这些基础概念和实践技巧,读者可以更好地掌握Django ORM,提升开发效率。
10 0
|
10月前
|
Shell Python
02 Django入门 - 虚拟环境下安装django
02 Django入门 - 虚拟环境下安装django
49 0
|
4月前
|
算法 Java Python
Python【算法中心 01】Web框架Django入门(安装+项目创建+应用创建+服务启动)Python搭建算法中心后台实例分享
Python【算法中心 01】Web框架Django入门(安装+项目创建+应用创建+服务启动)Python搭建算法中心后台实例分享
68 0