Python:MySQL数据库及连接池的使用
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
提示:需要对Python有一定的学习了解
例如:编程语言的应用离不开数据存储,通常会使用各种类型的数据库进行数据存储;例如:Oracle,SqlServer,MySQL等关系型数据库。
一、使用的场景
1:构建web网站,数据库存储网站基本和用户数据信息。
2:爬虫数据存储,通过程序爬取数据,需要保存到数据库中以待处理和使用。
3:市面上的各种APP,小程序,工业软件等的数据也需要存储到数据库
所以连接数据库是必要的,Python以语法简单著称,所以连接数据库也较为简单。
二、使用步骤
我使用的是PyMySQL库
1.安装库
pip3 install PyMySQL
若后面连接有问题,看看版本兼容,网上查查问题就行
1.简单示例
代码如下(示例):
# 导入pymysql库
import pymysql
# 打开数据库连接,记得替换成你实际的参数对应值
# host:数据库服务实际地址,user:用户名,password:密码,database:数据库名称
db = pymysql.connect(host='localhost',
user='***',
password='***',
database='***')
# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()
# 使用 execute() 方法执行 SQL 查询
cursor.execute("select * from KC")
# 使用 fetchone() 方法获取单条数据.
data = cursor.fetchone()
# 打印数据结果
print (data)
# 关闭数据库连接
db.close()
2.示例(公共模块+连接池)
连接池模块代码如下(示例):
import pymysql
from dbutils.pooled_db import PooledDB
# 数据库配置
DB_CONFIG = {
'host': '127.0.0.1',
'user': '***',
'password': '***',
'database': 'you database',
'charset': 'utf8mb4',
'cursorclass': pymysql.cursors.DictCursor,
'maxconnections': 10, # 连接池允许的最大连接数,0和None表示不限制连接数
'mincached': 2, # 初始化时,连接池中至少创建的空闲的连接,0表示不创建
'maxcached': 5, # 连接池中最多闲置的连接,0和None不闲置连接
'maxshared': 3, # 连接池中最多共享的连接数量,0和None表示全部连接都是专用的
'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
}
# 创建连接池
db_pool = PooledDB(
creator=pymysql, # 使用链接数据库的模块
# maxconnections=DB_CONFIG['maxconnections'], # 连接池允许的最大连接数,0和None表示不限制连接数
# host=DB_CONFIG['myhost'],
# port=3306,
# user=DB_CONFIG['myuser'],
# password=DB_CONFIG['mypassword'],
# database=DB_CONFIG['mydatabase'],
# charset=DB_CONFIG['mycharset'],
# cursorclass=DB_CONFIG['mycursorclass'],
**DB_CONFIG # 其他配置
)
# 获取连接
def get_conn():
return db_pool.connection()
# 你可以将这个函数(get_conn)添加到你的ORM或DAO层中,以便在需要时获取数据库连接
使用模块代码如下
#引用模块
from ConnectionPool import get_conn
#连接数据库
conn = get_conn()
# 使用 cursor() 方法创建一个游标对象 cursor
cursor = conn.cursor()
# 使用 execute() 方法执行 SQL 查询
cursor.execute("select * from KC")
# 使用 fetchone() 方法获取单条数据.
data = cursor.fetchone()
# 打印数据结果
print (data)
使用时只需在当期模块中导入连接池模块,使用其连接方法即可使用,不用每次都去写重复的连接代码
总结
1.其他编程语言连接数据库思想也如此,具体写法有所不同而已。例如java开发框架(spring、spring boot)对于数据库连接可能更简便,但需要学习一下。
2.使用连接池方法可以减少重复工作量,让代码易读可维护性高。
作者:valley-m