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

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS AI 助手,专业版
简介: 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)


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
5月前
|
Oracle 关系型数据库 Linux
【赵渝强老师】Oracle数据库配置助手:DBCA
Oracle数据库配置助手(DBCA)是用于创建和配置Oracle数据库的工具,支持图形界面和静默执行模式。本文介绍了使用DBCA在Linux环境下创建数据库的完整步骤,包括选择数据库操作类型、配置存储与网络选项、设置管理密码等,并提供了界面截图与视频讲解,帮助用户快速掌握数据库创建流程。
478 93
|
4月前
|
SQL 关系型数据库 数据库
Python SQLAlchemy模块:从入门到实战的数据库操作指南
免费提供Python+PyCharm编程环境,结合SQLAlchemy ORM框架详解数据库开发。涵盖连接配置、模型定义、CRUD操作、事务控制及Alembic迁移工具,以电商订单系统为例,深入讲解高并发场景下的性能优化与最佳实践,助你高效构建数据驱动应用。
544 7
|
8月前
|
关系型数据库 MySQL 数据库连接
Django数据库配置避坑指南:从初始化到生产环境的实战优化
本文介绍了Django数据库配置与初始化实战,涵盖MySQL等主流数据库的配置方法及常见问题处理。内容包括数据库连接设置、驱动安装、配置检查、数据表生成、初始数据导入导出,并提供真实项目部署场景的操作步骤与示例代码,适用于开发、测试及生产环境搭建。
385 1
|
5月前
|
Ubuntu 安全 关系型数据库
安装与配置MySQL 8 on Ubuntu,包括权限授予、数据库备份及远程连接指南
以上步骤提供了在Ubuntu上从头开始设置、配置、授权、备份及恢复一个基础但完整的MySQL环境所需知识点。
570 7
|
5月前
|
缓存 Java 应用服务中间件
Spring Boot配置优化:Tomcat+数据库+缓存+日志,全场景教程
本文详解Spring Boot十大核心配置优化技巧,涵盖Tomcat连接池、数据库连接池、Jackson时区、日志管理、缓存策略、异步线程池等关键配置,结合代码示例与通俗解释,助你轻松掌握高并发场景下的性能调优方法,适用于实际项目落地。
861 5
|
7月前
|
存储 前端开发 应用服务中间件
Django 实战:静态文件与媒体文件从开发配置到生产部署
Django项目中,静态文件(Static Files)和媒体文件(Media Files)是两类不同用途的文件。本文详细介绍了它们的区别、配置方法以及在开发与生产环境中的处理方式,并结合用户头像上传功能进行实战演示,最后讲解了如何通过Nginx或OpenResty部署静态与媒体文件服务。
343 1
|
8月前
|
安全 Java 数据库
Jasypt加密数据库配置信息
本文介绍了使用 Jasypt 对配置文件中的公网数据库认证信息进行加密的方法,以提升系统安全性。主要内容包括:1. 背景介绍;2. 前期准备,如依赖导入及版本选择;3. 生成密钥并实现加解密测试;4. 在配置文件中应用加密后的密码,并通过测试接口验证解密结果。确保密码安全的同时,保障系统的正常运行。
545 3
Jasypt加密数据库配置信息
|
7月前
|
SQL XML Java
配置Spring框架以连接SQL Server数据库
最后,需要集成Spring配置到应用中,这通常在 `main`方法或者Spring Boot的应用配置类中通过加载XML配置或使用注解来实现。
579 0
|
5月前
|
缓存 关系型数据库 BI
使用MYSQL Report分析数据库性能(下)
使用MYSQL Report分析数据库性能
431 158
|
5月前
|
关系型数据库 MySQL 数据库
自建数据库如何迁移至RDS MySQL实例
数据库迁移是一项复杂且耗时的工程,需考虑数据安全、完整性及业务中断影响。使用阿里云数据传输服务DTS,可快速、平滑完成迁移任务,将应用停机时间降至分钟级。您还可通过全量备份自建数据库并恢复至RDS MySQL实例,实现间接迁移上云。