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是