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()