备注: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的更多相关文章

  1. Node.js使用MySQL的连接池

    使用Nodejs+MySQL肯定比PHP和MySQL的组合更适合做服务器端的开发. 使用Nodejs你会从他的异步行为中获益良多.比如,提升性能,你无须在从已有的MySQL数据库迁移到其他的NoSQL ...

  2. [nodejs]解决mysql和连接池(pool)自动断开问题

    最近在做一个个人项目,数据库尝试使用了mongodb.sqlite和mysql.分享一下关于mysql的连接池用法.项目部署于appfog,项目中我使用连接池链接数据库,本地测试一切正常.上线以后,经 ...

  3. Python下Mysql数据连接池——单例

    # coding:utf-8 import threading import pymysql from DBUtils.PooledDB import PooledDB from app.common ...

  4. nodejs mysql 创建连接池

    用Nodejs连接MySQL 从零开始nodejs系列文章,将介绍如何利Javascript做为服务端脚本,通过Nodejs框架web开发.Nodejs框架是基于V8的引擎,是目前速度最快的Javas ...

  5. MySQL&ES连接池

    数据库的连接池建议放在类似settings.py的配置模块中,因为基本都是配置项,方便统一管理. 1) 连接池类#settings.py import os from DBUtils.PooledDB ...

  6. hibernate+mysql的连接池配置

    1:连接池的必知概念    首先,我们还是老套的讲讲连接池的基本概念,概念理解清楚了,我们也知道后面是怎么回事了. 以前我们程序连接数据库的时候,每一次连接数据库都要一个连接,用完后再释放.如果频繁的 ...

  7. Tomcat 下 mysql的连接池配置和使用

    最近维护的一个项目出了问题,最后分析是卡在数据库连接池上,然后就做了些学习. 先把我自己的方法写出来,再说下网上其他的没有成功的方法. 1.首先当然是先把mysql的jar包放在lib目录下,tonc ...

  8. c3p0连接池封装

    在处理数据库事物时需要同一个Connection  但是dbcp无法获得  单独工具也显得繁琐,改进成c3p0工具类: package utils; import java.sql.Connectio ...

  9. 码海拾遗:基于MySQL Connector/C++的MySQL操作(连接池)

    1.MySQL安装及简单设置 (1)安装:在OSX系统下,可以使用万能的“brew install”命令来进行安装:brew isntall mysql(默认安装最新版的MySQL) (2)启动:br ...

随机推荐

  1. python并发编程之协程(实践篇)

    一.协程介绍 协程:是单线程下的并发,又称微线程,纤程.一句话说明什么是线程:协程是一种用户态的轻量级线程,即协程是由用户程序自己控制调度的. 对于单线程下,我们不可避免程序中出现io操作,但如果我们 ...

  2. I2C初始化结构体详解

    typedef struct { uint32_t I2C_ClockSpeed; /*设置SCL时钟频,此值不低于40000*/ uint16_t I2C_Mode; /* 指定工作模式,可选I2C ...

  3. go struct 的方法1

    方法 Go 没有类.然而,仍然可以在结构体类型上定义方法. 方法接收者 出现在 func 关键字和方法名之间的参数中. package main import (     "fmt" ...

  4. MongoDB增删改

    一.数据库操作 显示现有的数据库,命令:show dbs 或者 databases; 示当前使用的数据库,命令:db 切换当前使用的数据库,命令:use 数据库名称 删除数据库,命令:db.dropD ...

  5. LOJ2557 CTSC2018组合数问题(提交答案)

    直接利用simulator退火应该可以得到大量分数. op=1:1,4,5,6,10 即构造序列{ai},最小化Σti,ai+rai,aj. 1:暴搜/退火. 4:观察到图大致成一条链(注意其中有两个 ...

  6. C#基础--Virtual与abstract区别、重写

    Virtual作用:子类可以对父类重写,虚方法是对多态特征体现.代表一类对象的所具有的公共属性或方法. public class Animal { public string Name { get; ...

  7. 前端关于 superSlide.js 使用,一款基于jquery的前端控件

    1引用jQuery.js 和 jquery.SuperSlide.js 2 编写HTML ** 以下是默认的HTMl结构,分别是 ".hd" 里面包含ul, ".bd&q ...

  8. luogu2657-Windy数题解--数位DP

    题目链接 https://www.luogu.org/problemnew/show/P2657 分析 第一道数位DP题,发现有点意思 DP求\([L,R]\)区间内的XXX个数,很套路地想到前缀和, ...

  9. java实现当前时间往前推N小时

    import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date; /** * @author sha ...

  10. TODO页面

    功能:1.根据数据显示当前所未完成的事件, 2.可通过输入框进行事件的添加,可标记已完成的事件并进行删除,可修改已添加的事件. ps:插件引入均使用本地文件,需改用静态CDN. 效果: 代码实现: & ...