简介
-
pymysql:纯Python实现的一个驱动。因为是纯Python编写的,因此执行效率不如MySQL-python。并且也因为是纯Python编写的,因此可以和Python代码无缝衔接。
-
MySQL Connector/Python:MySQL官方推出的使用纯Python连接MySQL的驱动。因为是纯Python开发的,效率不高。
-
MySQL-python:也就是MySQLdb。是对C语言操作MySQL数据库的一个简单封装。遵循了Python DB API v2。但是只支持Python2,目前还不支持Python3。
-
mysqlclient:是MySQL-python的另外一个分支。支持Python3并且修复了一些bug。
完整代码下载地址:Python操作数据库及Python实现mysql数据库连接池源代码
PyMySQL
Python3 MySQL 数据库连接 - PyMySQL 驱动
PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb。
pip3 install PyMySQL
案例
这里以查询秒杀商品数据为例:
#!/usr/bin/python3
import pymysql
# 打开数据库连接
db = pymysql.connect("localhost", "root", "123456", "seckill")
# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()
# 使用 execute() 方法执行 SQL 查询
cursor.execute("SELECT * FROM seckill")
# 使用 fetchall() 方法获取s所有数据.
data = cursor.fetchall()
print(data)
# 关闭数据库连接
db.close()
mysql-connector
mysql-connector 是 MySQL 官方提供的驱动器。
我们可以使用 pip 命令来安装 mysql-connector:
pip3 install mysql-connector
案例
这里以查询秒杀商品数据为例:
#!/usr/bin/python3
import mysql.connector
# 打开数据库连接
# db = pymysql.connect("localhost", "root", "123456", "seckill")
db = mysql.connector.connect(
host="localhost",
user="root",
passwd="123456",
database="seckill"
)
# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()
# 使用 execute() 方法执行 SQL 查询
cursor.execute("SELECT * FROM seckill")
# 使用 fetchall() 方法获取s所有数据.
data = cursor.fetchall()
print(data)
# 关闭数据库连接
db.close()
python编程中可以使用MySQLdb进行数据库的连接及诸如查询/插入/更新等操作,但是每次连接mysql数据库请求时,都是独立的去请求访问,相当浪费资源,
而且访问数量达到一定数量时,对mysql的性能会产生较大的影响。
因此,实际使用中,通常会使用数据库的连接池技术,来访问数据库达到资源复用的目的。
安装数据库连接池模块DBUtils
pip3 install DBUtils
DBUtils是一套Python数据库连接池包,并允许对非线程安全的数据库接口进行线程安全包装。DBUtils来自Webware for Python。
DBUtils提供两种外部接口:
PersistentDB :提供线程专用的数据库连接,并自动管理连接。
PooledDB :提供线程间可共享的数据库连接,并自动管理连接。
dbapi :数据库接口
mincached :启动时开启的空连接数量
maxcached :连接池最大可用连接数量
maxshared :连接池最大可共享连接数量
maxconnections :最大允许连接数量
blocking :达到最大数量时是否阻塞
maxusage :单个连接最大复用次数
根据自己的需要合理配置上述的资源参数,以满足自己的实际需要。
完整代码下载地址:Python操作数据库及Python实现mysql数据库连接池源代码