• python之mysql(二)


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

  • 相关阅读:
    2018个人面试记录
    如何用纯代码实现图片CSS3
    JS数组删除
    JS数组去重
    HTML--使用提交按钮,提交数据
    HTML--使用下拉列表框进行多选
    HTML--使用下拉列表框,节省空间
    HTML--使用单选框、复选框,让用户选择
    HTML--文本域,支持多行文本输入
    HTML--文本输入框、密码输入框
  • 原文地址:https://www.cnblogs.com/awenxianliao/p/7877453.html
Copyright © 2020-2023  润新知