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