django连接自定义mysql,django mysql 自定义数据库及配置

django mysql 自定义数据库及配置

Django 在创建项目的时候,会自动生成配置,不过默认数据库不是我们想要的,现在贴一下 自定义数据库:

DATABASES = {

'default': {

# 'ENGINE': 'django.db.backends.mysql',#默认写这个,先修改了

'ENGINE': 'mysql',

'POOL_SIZE': 20, # 每个进程的连接池的大小,总连接数=20*总进程数

'STORAGE_ENGINE': 'INNODB', # 存储引擎

'CHARSET': 'utf-8', # 字符集

'CONN_MAX_AGE': 28790, # 比mysql默认的wait_timeout小10秒

'NAME': "mysystem",

'USER': 'root',

'PORT': 3306,

'PASSWORD': "123456",

'HOST': "127.0.0.1",

"OPTIONS": {"init_command": "SET default_storage_engine=INNODB;"}

}

}

在这里ENGINE被我替换改写了,创建一个包,如图:

base.py 代码:

# -*- coding: utf-8 -*-

import random

from django.core.exceptions import ImproperlyConfigured

try:

import MySQLdb as Database

except ImportError as err:

raise ImproperlyConfigured(

'Error loading MySQLdb module.\n'

'Did you install mysqlclient'

) from err

from django.db.backends.mysql.base import DatabaseWrapper as _DatabaseWrapper

class DatabaseWrapper(_DatabaseWrapper):

def get_new_connection(self, conn_params):

pool_size = self.settings_dict.get('POOL_SIZE') or 1

# 1/0

# print(pool_size,'error')

return ConnectPool.instance(conn_params, pool_size).get_connection()

def _close(self):

return None # 覆盖掉原来的close方法,查询结束后连接不会自动关闭

class ConnectPool(object):

def __init__(self, conn_params, pool_size):

self.conn_params = conn_params

self.pool_size = pool_size

self.connects = []

# 实现连接池的单例

@staticmethod

def instance(conn_params, pool_size):

if not hasattr(ConnectPool, '_instance'):

ConnectPool._instance = ConnectPool(conn_params, pool_size)

return ConnectPool._instance

def get_connection(self):

if len(self.connects) < self.pool_size:

new_connect = Database.connect(**self.conn_params)

self.connects.append(new_connect)

return new_connect

index = random.randint(0, self.pool_size - 1) # 注意这里和range不一样,要减1

try:

self.connects[index].ping()

except:

self.connects[index] = Database.connect(**self.conn_params)

return self.connects[index]

整完之后,你就可以验证一下是否是你自定义的引擎。

django mysql 自定义数据库及配置 相关文章

django-apscheduler 定时任务使用方法

详解django-apscheduler的使用方法 如果你在使用Django框架开发web项目时,需要设置定时任务或让用户手动在页面上设置定时任务,那么这篇文章可能会帮助到你。 概述 在Django中实现定时任务功能大概有以下三种方法: Celery框架 定时任务是分布式任务的一种

汇总:centos7,jdk8,tomcat8.5,nginx,mysql57,redis安装,【推荐】

centos7 安装时按默认最小安装即可,安装完毕后, 进入/etc/sysconfig/network-scripts/ 将ifcfg-enp0s3(以ifcfg开头的网卡名字),编辑 将 ONBOOT="no" ,改为 yes。重启 :关闭selinux: vi /etc/selinux/config 将SELINUX=enforcing改为disable。 :关闭fir

Vue 3自定义指令开发

本文由葡萄城技术团队原创并首发 转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 什么是指令(directive) 在Angular和Vue中都有Directive的概念,我们通常讲Directive 翻译为“指令”。 在计算机技术中,指

python实现爬取微博热搜存入Mysql

免费学习推荐: python视频教程 python爬取微博热搜存入Mysql 最终的效果 使用的库 目标分析 一:得到数据 二:链接数据库 总代码 最终的效果 废话不多少,直接上图 这里可以清楚的看到,数据库里包含了日期,内容,和网站link 下面我们来分析怎么实现 使用

陌陌面试官:谈谈你对MySQL中事务和锁的理解

正文如下:众所周知,事务和锁是mysql中非常重要功能,同时也是面试的重点和难点。本文会详细介绍事务和锁的相关概念及其实现原理,相信大家看完之后,一定会对事务和锁有更加深入的理解。整理了一份328页MySQL,PDF文档 # 什么是事务 在维基百科中,对事务的

uwsgi部署django

命令行部署 uwsgi --http :8001 --chdir /path/to/project --home=/path/to/env --module project.wsgi --chdir=/path/to/project # 项目目录 --home=/path/to/env # 指定virtualenv 路径,如果没有可以去掉。 --module project.wsgi # project/wsgi.py 文件

Django默认用户认证系统

1. Django默认用户认证系统 Django自带用户认证系统 它处理用户账号、组、权限以及基于cookie的用户会话。 Django认证系统位置 django.contrib.auth 包含认证框架的核心和默认的模型。 django.contrib.contenttypes 是Django内容类型系统,它允许权限与你创

CentOS 7安装MySQL 5.7

CentOS 7安装MySQL 5.7 下载repo curl https://repo.mysql.com//mysql80-community-release-el7-3.noarch.rpm --output mysql80-community-release-el7-3.noarch.rpm 安装repo rpm -ivh mysql80-community-release-el7-3.noarch.rpm 禁用8.0启用5.7 vim /etc

php 自定义验证器二:完整验证器

验证器类:Validate.php phpnamespace framework\library;class Validate{ /** * 当前验证规则 * @var array */ protected $rule = []; /** * 验证提示信息 * @var array */ protected $message = []; /** * 错误信息 * @var array * */ protected $error =

8 Django 模型层(1)

ORM简介 MVC或者MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人员的工作量,不需要面对因数据库变更而导致的无效劳动 ORM是

你可能感兴趣的:(django连接自定义mysql,django mysql 自定义数据库及配置)