• (六)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)
  • 相关阅读:
    Winforms界面开发技巧:解决旧UI要求的新方法
    Kendo UI for jQuery数据管理使用教程:PDF导出(二)
    WPF界面开发——格式化通过CellToolTipBinding定义的工具提示值
    Winforms 2020界面开发新纪元——Map、Pivot Grid控件升级
    Web开发实用技能,看Kendo UI for jQuery如何PDF导出(一)
    DevExpress Winforms界面开发,带你了解Visual Studio Palette Editor!
    界面控件DevExpress 7月版本已更新,重要更改看这里!
    WPF界面开发必看功能——Splash Screen Manager
    Web开发实用技能,看Kendo UI for jQuery如何导出Excel(二)
    redis 应用场景
  • 原文地址:https://www.cnblogs.com/pythonlx/p/7875916.html
Copyright © 2020-2023  润新知