Python之mysql-pool

本文介绍Python中MySQL数据库的游标使用方法及数据库连接池的实现方式。包括游标的创建、基本操作如fetchone、fetchmany和fetchall等,并通过示例代码展示具体应用。同时介绍了如何利用DBUtils包搭建数据库连接池,提高数据库访问效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python之mysql-pool

1.游标

游标提供了一种对从表中检索出的数据进行操作的灵活手段,就本质而言,游标实际上是一种能从包括多条数据记录的结果集中每次提取一条记录的机制。游标总是与一条SQL 选择语句相关联因为游标由结果集(可以是零条、一条或由相关的选择语句检索出的多条记录)和结果集中指向特定记录的游标位置组成。当决定对结果集进行处理时,必须声明一个指向该结果集的游标。

常用方法:

cursor():创建游标对象
       close():关闭此游标对象
       fetchone():得到结果集的下一行
       fetchmany([size = cursor.arraysize]):得到结果集的下几行
       fetchall():得到结果集中剩下的所有行
       excute(sql[, args]):执行一个数据库查询或命令
       executemany (sql, args):执行多个数据库查询或命令

代码如下:

#!/usr/bin/env python
# -*- coding:utf8 -*-
# @Time     : 2017/11/21 15:51
# @Author   : hantong
# @File     : youbiao.py
import MySQLdb
def connect_mysql():
    db_config = {
        "host":'10.3.1.113',
        "port":'3306',
        "user":'cn_uts',
        "passwd":'cn_uts',
        "db": 'mysql',
        "charset":'utf-8'
    }
    cnx = MySQLdb.connect(**db_config)
#建立mysql连接对象
    return cnx
if __name__ == '__main__':
    cnx = connect_mysql()
    cus = cnx.cursor()
    #创建游标
    sql  = '''select * from test;'''
    try:
        cus.execute(sql)
        result1 = cus.fetchone()
        #在最终搜索的数据中去一条数据
        print('result1:')
        print(result1)
        result2 = cus.fetchmany(1)
        #在接下来的数据中再去一行数据,后面的数字可以自定义
        print('result2:')
        print(result2)
        result3 = cus.fetchall()
        #在所有的结果中搞出来所有的数据
        print('result3:')
        print(result3)
        cus.close()
        cnx.commit()
    except Exception as e:
        cnx.rollback()
        print('error')
        raise e
    finally:
        cnx.close()
2.数据库连接池

数据库连接池包:DBUtils

安装方式:pip install DBUtils

代码如下:

#!/usr/bin/env python
# -*- coding:utf8 -*-
# @Time     : 2017/11/21 16:03
# @Author   : hantong
# @File     : mysql_pool.py
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# @Time    : 2017/9/18 22:46
# @Author  : lingxiangxiang
# @File    : demon4.py


import MySQLdb
from DBUtils.PooledDB import PooledDB
def connect_mysql():
    db_config = {
        "host":'10.3.1.113',
        "port":'3306',
        "user":'cn_uts',
        "passwd":'cn_uts',
        "db": 'mysql',
        "charset":'utf-8'
    }
pool = PooledDB(MySQLdb, 5, **db_config)
# 5为连接池里的最少连接数

conn = pool.connection()
# 以后每次需要数据库连接就是用connection()函数获取连接就好了
cur = conn.cursor()
SQL = "select * from tmp;"
r = cur.execute(SQL)
r = cur.fetchall()
print(r)
cur.close()
conn.close()

# PooledDB的参数:
# 1. mincached,最少的空闲连接数,如果空闲连接数小于这个数,pool会创建一个新的连接
# 2. maxcached,最大的空闲连接数,如果空闲连接数大于这个数,pool会关闭空闲连接
# 3. maxconnections,最大的连接数,
# 4. blocking,当连接数达到最大的连接数时,在请求连接的时候,如果这个值是True,请求连接的程序会一直等待,直到当前连接数小于最大连接数,如果这个值是False,会报错,
# 5. maxshared 当连接数达到这个数,新请求的连接会分享已经分配出去的连接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值