mysql(二)

1、游标

 1 from connect import connect_mysql
 2 if __name__ == '__main__':
 3     #获取连接对象
 4     cnx = connect_mysql()
 5     #创建游标
 6     cus = cnx.cursor()
 7     sql  = "select * from aaa;"
 8     try:
 9         cus.execute(sql)
10         #执行sql
11         result1 = cus.fetchone()
12         #得到一行的结果
13         print('result1:')
14         print(result1)
15         result2 = cus.fetchmany(2)
16         #得到两行结果
17         print('result2:')
18         print(result2)
19         result3 = cus.fetchall()
20         #得到剩下的所有行结果
21         print('result3:')
22         print(result3)
23         cus.close()
24         #关闭游标
25         cnx.commit()
26         #提交事务
27     except Exception as e:
28         cnx.rollback()
29         #如果执行sql异常,回滚事务
30 
31         raise e
32     finally:
33         cnx.close()
34         # 关闭连接

2、连接池

 1 # 连接池对性能的提升表现在:
 2 # 在程序创建连接的时候,可以直接使用一个空闲连接,不需要重新初始化连接,提升获取连接的速度
 3 # 关闭连接的时候,把连接放回连接池,而不是真正的关闭,所以可以减少频繁地打开和关闭连接的操作
 4 
 5 # python的数据库连接池包 DBUtils:
 6 # DBUtils是一套Python数据库连接池包,并允许对非线程安全的数据库接口进行线程安全包装。DBUtils来自Webware for Python。
 7 #
 8 # DBUtils提供两种外部接口:
 9 # * PersistentDB :提供线程专用的数据库连接,并自动管理连接。
10 # * PooledDB :提供线程间可共享的数据库连接,并自动管理连接。
11 # 下载地址:https://pypi.python.org/pypi/DBUtils/下载解压后,使用python setup.py install 命令进行安装
12 # 或者使用
13 # Pip install DBUtils
14 
15 
16 # 参数配置
17 # pool_name: 连接池的名称,多种连接参数对应多个不同的连接池对象,多单例模式;
18 # host: 数据库地址
19 # user: 数据库服务器用户名
20 # password: 用户密码
21 # database: 默认选择的数据库
22 # port: 数据库服务器的端口
23 # charset: 字符集,默认为 ‘utf8'
24 # use_dict_cursor: 使用字典格式或者元组返回数据;
25 # max_pool_size: 连接池优先最大连接数;
26 # step_size: 连接池动态增加连接数大小;
27 # enable_auto_resize: 是否动态扩展连接池,即当超过 max_pool_size 时,自动扩展 max_pool_size;
28 # pool_resize_boundary: 该配置为连接池最终可以增加的上上限大小,即时扩展也不可超过该值;
29 # auto_resize_scale: 自动扩展 max_pool_size 的增益,默认为 1.5 倍扩展;
30 # wait_timeout: 在排队等候连接对象时,最多等待多久,当超时时连接池尝试自动扩展当前连接数;
31 # kwargs: 其他配置参数将会在创建连接对象时传递给 pymysql.Connection
32 import MySQLdb
33 from DBUtils.PooledDB import PooledDB
34 
35 pool = PooledDB(MySQLdb, 5, host="101.132.125.136",user="root",passwd="aisirea802311",db="python")
36 # 5为连接池里的最少连接数
37 
38 conn = pool.connection()
39 # 以后每次需要数据库连接就是用connection()函数获取连接就好了
40 cur = conn.cursor()
41 SQL = "select * from aaa;"
42 a = cur.execute(SQL)
43 a = cur.fetchall()
44 print(a)
45 cur.close()
46 conn.close()

 

posted @ 2017-11-22 10:19  依哈  阅读(150)  评论(0编辑  收藏  举报