1.游标

游标(cursor)
游标是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果;用户可以用SQL语句逐一从游标中获取记录,并赋给主变量,交由python进一步处理,一组主变量一次只能存放一条记录;仅使用主变量并不能完全满足SQL语句向应用程序输出数据的要求.
1.游标和游标的优点
在数据库中,游标是一个十分重要的概念.游标提供了一种对从表中检索出的数据进行操作的灵活手段,就本质而言,游标实际上是一种能从包括多条数据记录的结果集中每次提取一条记录的机制.游标总是与一条SQL选择语句相关联因为游标由结果集(可以是零条、一条或由相关的选择语句检索出的多条记录)和结果集中指向特定记录的游标位置组成.当决定对结果集进行处理时,必须声明一个指向该结果集的游标.
常用方法:

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


from demo2 import connect_mysqlif __name__=="__main__":
	sql="select * from tmp;"
	cnx=connect_mysql()
	cus=cnx.cursor()
	try:
		cus.execute(sql)
		result=cus.fetchone()
	except Exception as e:
		cnx.rollback()
	finally:
		cnx.close()

2.mysql连接池

python的数据库连接池包DBUtils:
DBUtils是一套Python数据库连接池包,并允许对非线程安全的数据库接口进行线程安全包装.
DBUtils来自Webware for Python.

DBUtils提供两种外部接口:
PersistentDB:提供线程专用的数据库连接,并自动管理连接.
PooledDB:提供线程间可共享的数据库连接,并自动管理连接.
下载地址:https://pypi.python.org/pypi/DBUtils/ 下载解压后,使用python

setup.py install 命令进行安装

或者使用

pip install DBUtils

 

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:当连接数达到这个数,新请求的连接会分享已经分配出去的连接;