zoukankan      html  css  js  c++  java
  • (六)6-2Mysql游标和连接池

    游标

    游标提供了一种对从表中检索出的数据进行操作的灵活手段,游标实际上是一种能从包括多条数据记录的结果集中每次提取一条记录的机制。游标总是与一条SQL选择语句相关联因为游标由结果集(可以是零条、一条或相关的选择语句检索出的多条记录)和结果集中指向特定记录的游标位置组成。当决定对结果集进行处理时,必须声明一个指向该结果集的游标。

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

    connect.py

    #!/usr/bin/env python 
    #coding:utf8
    import MySQLdb
    def connect_mysql():
        db_config = {
            "host":"127.0.0.1",
            "port":3306,
            "user":"root",
            "passwd":"123456",
            "db":"world",
            "charset":"utf8",
        }
        try:
            cnx = MySQLdb.connect(**db_config)
        except Exception as e :
            raise e
        return  cnx
    #!/usr/bin/env python 
    #coding:utf8
    import MySQLdb
    from connect import  connect_mysql
    
    if __name__ == "__main__":
        sql = "select * from city"
        cnx = connect_mysql()
        cus = cnx.cursor()
        # print(dir(cus))
        try :
            cus.execute(sql)
            result = cus.fetchone()
            print(result)
    
            result1 = cus.fetchmany(3)
            print(result1)
            # result3 = cus.fetchall()
            # print(result3)
            cus.close()
        except Exception as e :
            cnx.rollback()
            raise e
        finally:
            cnx.close()

    mysql连接池

    Python DBUtils
    DBUtils是一套Python数据库连接池包,并允许对非线程安全的数据库接口进行线程安全包装。DBUtils来自Webware for Python。
    DBUtils提供两种外部接口:
    PersistentDB :提供线程专用的数据库连接,并自动管理连接。
    PooledDB :提供线程间可共享的数据库连接,并自动管理连接。
    下载地址:http://www.webwareforpython.org/downloads/DBUtils/
    或者Pip install DBUtils
    例子:

    #!/usr/bin/env python 
    #coding:utf8
    import MySQLdb
    from DBUtils.PooledDB import PooledDB
    
    db_config = {
        "host": "127.0.0.1",
        "port": 3306,
        "user": "root",
        "passwd": "123456",
        "db": "world",
        "charset": "utf8",
    }
    pool = PooledDB(MySQLdb,5,**db_config)
    
    if __name__ == "__main__":
        cnx = pool.connection()
        cus = cnx.cursor()
        sql = "select * from city"
        try:
            cus.execute(sql)
            result = cus.fetchone()
            print(result)
            cus.close()
            cnx.commit()
        except Exception as e :
            raise e
        finally:
            cnx.close()

    运行结果:

    (1L, u'Kabul', u'AFG', u'Kabol', 1780000L)
  • 相关阅读:
    Java数据类型与运算符
    [DEBUG] Springboot打包jar/war后访问包外的路径
    Html大段文本自适应换行显示-SSM
    [DEBUG] ubuntu pip安装成功却无法import
    [DEBUG] ubuntu mysql root@localhost改了密码还是进不去ERROR 1698 (28000)
    [DEBUG] Spring boot前端html无法下载示例文件
    [DEBUG] spring boot在eclipse中用maven打包成jar访问templates报500错误
    [DEBUG] java中用Runtime调用python 简单程序输出null
    SpringBoot中service注入失败(A component required a bean of type 'XXService' that could not found)
    Numpy安装报错:试过N种安装方法终于
  • 原文地址:https://www.cnblogs.com/pythonlx/p/7875916.html
Copyright © 2011-2022 走看看