MySQL 使用连接池封装pymysql
备注:1,记得先修改连接的数据库哦,(用navicat更方便一点);2,分开两个py文件写入,运行sqlhelper.py文件
一、在utils.py中写
import pymysql
from DBUtils.PooledDB import PooledDB POOL = PooledDB(
creator=pymysql, # 使用链接数据库的模块
maxconnections=6, # 连接池允许的最大连接数,0和None表示不限制连接数
mincached=2, # 初始化时,链接池中至少创建的空闲的链接,0表示不创建
maxcached=5, # 链接池中最多闲置的链接,0和None不限制
maxshared=1, # 链接池中最多共享的链接数量,0和None表示全部共享。PS: 无用,因为pymysql和MySQLdb等模块的 threadsafety都为1,所有值无论设置为多少,_maxcached永远为0,所以永远是所有链接都共享。
blocking=True, # 连接池中如果没有可用连接后,是否阻塞等待。True,等待;False,不等待然后报错
maxusage=None, # 一个链接最多被重复使用的次数,None表示无限制
setsession=[], # 开始会话前执行的命令列表。如:["set datestyle to ...", "set time zone ..."]
ping=0,
# ping MySQL服务端,检查是否服务可用。
# 如:0 = None = never,
# 1 = default = whenever it is requested,
# 2 = when a cursor is created,
# 4 = when a query is executed,
# 7 = always
host='127.0.0.1',
port=3306,
user='root',
password='',
database='ziji',
charset='utf8'
) 二、在sqlhelper.py中写入:
from utils import POOL
import pymysql def create_conn():
conn = POOL.connection()
cursor = conn.cursor(pymysql.cursors.DictCursor)
return conn, cursor def close_conn(conn, cursor):
conn.close()
cursor.close() def select_one(sql, args):
conn, cur = create_conn()
cur.execute(sql, args)
result = cur.fetchone()
close_conn(conn, cur)
return result def select_all(sql, args):
conn, cur = create_conn()
cur.execute(sql, args)
result = cur.fetchall()
close_conn(conn, cur)
return result def insert_one(sql, args):
conn, cur = create_conn()
result = cur.execute(sql, args)
conn.commit()
close_conn(conn, cur)
return result def delete_one(sql,args):
conn,cur = create_conn()
result = cur.execute(sql,args)
conn.commit()
close_conn(conn,cur)
return result def update_one(sql,args):
conn,cur = create_conn()
result = cur.execute(sql,args)
conn.commit()
close_conn(conn,cur)
return result # sql = "insert into stu(id,name,age) VALUE (%s,%s,%s)" #增加
# res = insert_one(sql, [2,"飞机", 28])
# print(res) # sql = "delete from stu where name = %s" #删除
# res = delete_one(sql, "哪吒")
# print(res) # sql = "select * from stu" #查询全部
# res = select_all(sql, [])
# print(res) # sql = "select * from stu where name=%s" #查询一条
# res = select_one(sql, "赵振伟")
# print(res) # sql = " UPDATE stu set name=%s where name = %s" #更新
# res = update_one(sql,("坦克","飞机"))
# print(res) 转载自:https://www.cnblogs.com/zzw731862651/articles/9605308.html
MySQL 使用连接池封装pymysql的更多相关文章
- Node.js使用MySQL的连接池
使用Nodejs+MySQL肯定比PHP和MySQL的组合更适合做服务器端的开发. 使用Nodejs你会从他的异步行为中获益良多.比如,提升性能,你无须在从已有的MySQL数据库迁移到其他的NoSQL ...
- [nodejs]解决mysql和连接池(pool)自动断开问题
最近在做一个个人项目,数据库尝试使用了mongodb.sqlite和mysql.分享一下关于mysql的连接池用法.项目部署于appfog,项目中我使用连接池链接数据库,本地测试一切正常.上线以后,经 ...
- Python下Mysql数据连接池——单例
# coding:utf-8 import threading import pymysql from DBUtils.PooledDB import PooledDB from app.common ...
- nodejs mysql 创建连接池
用Nodejs连接MySQL 从零开始nodejs系列文章,将介绍如何利Javascript做为服务端脚本,通过Nodejs框架web开发.Nodejs框架是基于V8的引擎,是目前速度最快的Javas ...
- MySQL&ES连接池
数据库的连接池建议放在类似settings.py的配置模块中,因为基本都是配置项,方便统一管理. 1) 连接池类#settings.py import os from DBUtils.PooledDB ...
- hibernate+mysql的连接池配置
1:连接池的必知概念 首先,我们还是老套的讲讲连接池的基本概念,概念理解清楚了,我们也知道后面是怎么回事了. 以前我们程序连接数据库的时候,每一次连接数据库都要一个连接,用完后再释放.如果频繁的 ...
- Tomcat 下 mysql的连接池配置和使用
最近维护的一个项目出了问题,最后分析是卡在数据库连接池上,然后就做了些学习. 先把我自己的方法写出来,再说下网上其他的没有成功的方法. 1.首先当然是先把mysql的jar包放在lib目录下,tonc ...
- c3p0连接池封装
在处理数据库事物时需要同一个Connection 但是dbcp无法获得 单独工具也显得繁琐,改进成c3p0工具类: package utils; import java.sql.Connectio ...
- 码海拾遗:基于MySQL Connector/C++的MySQL操作(连接池)
1.MySQL安装及简单设置 (1)安装:在OSX系统下,可以使用万能的“brew install”命令来进行安装:brew isntall mysql(默认安装最新版的MySQL) (2)启动:br ...
随机推荐
- js — 对象
目录 1. 字符串和数值之间转换 2. 对象(object) 3. 日期对象 4. 数学Math对象 5. 流程控制 6. 循环 1. 字符串和数值之间转换 1.字符串转数值 var str = '1 ...
- pandas数据结构之DataFrame笔记
DataFrame输出的为表的形式,由于要把输出的表格贴上来比较麻烦,在此就不在贴出相关输出结果,代码在jupyter notebook可以顺利运行代码中有相关解释用来加深理解方便记忆 import ...
- 【C#】课堂知识点#2
课堂上老师讲了几点,自己觉得挺重要的,记录下来 1.代码字体调大,方便调试 2.虚心请教,没有谁比谁厉害,不会就虚心多请教,baidu并不能解决所有问题.沟通交流也是一种能力 3.只有每行写对了,才继 ...
- 【hash】Similarity of Subtrees
图片来源: https://blog.csdn.net/dylan_frank/article/details/78177368 [题意]: 对于每一个节点来说有多少对相同的子树. [题解]: 利用层 ...
- (转)js-分享功能(qq,微信,微博)
//1 分享QQ好友 function qq(title,url,pic) { var p = { url: 'http://test.qicheyit ...
- 排序算法原理及代码实现(c#)
1.插入排序 把第一个元素看做已排序数组放在有序数组中,从第二个元素开始,依次把无序数组元素取出和有序数组中的元素逐个比较,并放在有序数组的正确位置上. /// <summary> /// ...
- 【web】使用ionic搭建移动端项目 icon-radio 标签在ios下全部选中的问题
这块css 导致的问题 .disable-pointer-events { pointer-events: none; }
- restTemplate源码解析(五)处理ClientHttpResponse响应对象
所有文章 https://www.cnblogs.com/lay2017/p/11740855.html 正文 上一篇文章中,我们执行了ClientHttpRequest与服务端进行交互.并返回了一个 ...
- TypeScript入门七:TypeScript的枚举
关于枚举 数字枚举 字符串枚举 异构枚举 计算的和常量成员 运行时的枚举与反向映射 常量枚举与外部枚举 一.关于枚举 枚举:一个集的枚举是列出某些有穷序列集的所有成员的程序,或者是一种特定类型对象的计 ...
- 下拉框选择 <from:select>