美文网首页
pymysql流式游标

pymysql流式游标

作者: 不存在的一角 | 来源:发表于2020-01-28 12:27 被阅读0次

Python通过pymysql操作向mysql读取千万、百万级别的数据库时

如果用传统的fetchall()fetchone()方法,都是先默认在内存里缓存下所有行然后再处理,大量的数据会导致内存资源消耗光,内存容易溢出

此时则建议使用SSCursor(流式游标),避免客户端占用大量内存

这个 cursor 实际上没有缓存下来任何数据,它不会读取所有所有到内存中,它的做法是从储存块中读取记录,并且一条一条返回给你,使用迭代器而不用 fetchall ,即省内存又能很快拿到数据

例:

def select_pan_url(self):
    db = pymysql.connect(host='localhost', port=3306, user='root', passwd='', db='')
    cursor = db.cursor(cursor=pymysql.cursors.SSDictCursor)

    select_sql = "select `name`, `detail_url`, `pan_title`, `pan_psw`, `pan_real_url` from agepan_wj"
    try:
        cursor.execute(select_sql)
        # 在处理大量数据时可以分割进行
        datas = cursor.fetchall()
        for pan in datas:
            self.row_lists.append(pan)
    except Exception as e:
        print('取数据失败', e)
        db.rollback()
    finally:
        cursor.close()
        db.close()

需要注意的是:

因为SSCursor是没有缓存的游标,结果集只要没取完,这个connect是不能再处理别的sql,包括另外生成一个cursor 也不行的,如果需要干别的,请另外再生成一个连接对象

每次读取后处理数据要快,不能超过 60 s,否则mysql将会断开这次连接

也可以修改SET NET_WRITE_TIMEOUT = xx来增加超时间隔

相关文章

  • pymysql流式游标

    Python通过pymysql操作向mysql读取千万、百万级别的数据库时 如果用传统的fetchall()或fe...

  • Python: 03. python-pymysql 连接mys

    查询实例 安装pymysql 依赖 02 代码导入pymysql 03 连接mysql 04 打开游标 05 游标...

  • 12.Mysql数据库实战

    什么是pymysql、pymysql的安装、pymysql连接对象、pymysql游标对象、案例 Part 1 -...

  • pymysql模块

    pymysql模块 一.创建连接库 二.建立游标 游标的属性 三.提交sql语句 普通提交 防注入提交 四.查看内...

  • MySQL-与Python交互

    pymysql的使用流程 建立数据库连接 创建游标对象 使用游标对象的方法和SQL语句操控MySQL数据库 提交数...

  • pymysql 连接mysql数据库 让取出的值从元组变成字典

    加载游标对象时,设置:self.cur=self.conn.cursor(pymysql.cursors.Dict...

  • Python模块·PyMySQL数据库

    一、PyMySQL实现思路流程 1.建立连接2.创建游标:游标数据库操作的接口3.数据库操作(建表、插入数据、查询...

  • 01-python操作Mysql数据库

    python操作数据库流程:--创建数据库连接 Conn=pymysql.connect()--创建游标cur=C...

  • pymysql简单操作数据库

    1、通过 pip 安装 pymysql 2、测试连接 3、打开数据库连接 ,获取游标 4、查询操作 4、插入操作 ...

  • MySQL与python3交互

    1、安装pymysql 2、链接数据库 打开数据库连接 使用 cursor() 方法创建一个游标对象 cursor...

网友评论

      本文标题:pymysql流式游标

      本文链接:https://www.haomeiwen.com/subject/legpthtx.html