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

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 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
相关文章
|
2天前
|
存储 数据库 Python
Python编程--Django入门:用户账户(一)
Python编程--Django入门:用户账户(一)
|
2天前
|
存储 Shell 数据库
Python编程--Django入门:用户账户(二)
Python编程--Django入门:用户账户(二)
|
1天前
|
应用服务中间件 数据库连接 网络安全
网站连接数据库配置错误
网站连接数据库配置错误
|
1月前
|
SQL 关系型数据库 分布式数据库
PolarDB Proxy配置与优化:提升数据库访问效率
【9月更文挑战第6天】PolarDB是阿里云推出的高性能分布式关系型数据库,PolarDB Proxy作为其关键组件,位于客户端与PolarDB集群间,负责SQL请求的解析与转发,并支持连接池管理、SQL过滤及路由规则等功能。本文详细介绍了PolarDB Proxy的配置方法,包括连接池、负载均衡和SQL过滤设置,并探讨了监控调优、缓存及网络优化策略,以帮助提升数据库访问效率。
31 1
|
15天前
|
数据库 Python
django中数据库外键可以自定义名称吗
django中数据库外键可以自定义名称吗
|
16天前
|
SQL Oracle 关系型数据库
Oracle数据库管理:从入门到精通
表(Table):表是Oracle数据库中存储数据的基本结构单元,由行(Row)和列(Column)组成。每行代表一个记录,每列代表一个字段。 SQL(Structured Query Language):SQL是Oracle数据库的核心语言,用于与数据库交互,执行查询、插入、更新和删除等操作。 数据库实例与数据库:在Oracle中,数据库实例是一组后台进程和内存结构,用于管理数据库并提供服务。而数据库则是数据的物理存储,包括数据文件、控制文件、联机日志和参数文件等。
39 0
|
1月前
|
Java 数据库连接 数据库
数据库以及其他项目配置
该项目配置了数据库连接和MyBatis设置,并解决了配置文件加载问题。启动类使用 `@SpringBootApplication` 注解,可通过 `@ComponentScan` 指定扫描包。Lombok 自动生成 getter/setter 等方法,简化代码。Result 实体类用于统一返回格式。用户模块包括注册与登录功能,使用 MD5 加密密码、Spring Validation 参数校验及 JWT 认证。JWT 工具类处理令牌生成与解析,并通过拦截器验证。Redis 优化登录功能,利用 ThreadLocal 存储用户信息。此外,还包括文章模块的相关功能,如文章分类管理、
39 2
|
1月前
|
SQL Java OLAP
Hologres 入门:实时分析数据库的新选择
【9月更文第1天】在大数据和实时计算领域,数据仓库和分析型数据库的需求日益增长。随着业务对数据实时性要求的提高,传统的批处理架构已经难以满足现代应用的需求。阿里云推出的 Hologres 就是为了解决这个问题而生的一款实时分析数据库。本文将带你深入了解 Hologres 的基本概念、优势,并通过示例代码展示如何使用 Hologres 进行数据处理。
155 2
|
29天前
|
SQL 关系型数据库 MySQL
MySQL技术安装配置、数据库与表的设计、数据操作解析
MySQL,作为最流行的关系型数据库管理系统之一,在WEB应用领域中占据着举足轻重的地位。本文将从MySQL的基本概念、安装配置、数据库与表的设计、数据操作解析,并通过具体的代码示例展示如何在实际项目中应用MySQL。
68 0