python操作数据库游标的作用_关于pymysql游标的一些使用见解

本文介绍了Python使用pymysql模块操作MySQL数据库时,游标的重要性和使用方法。普通cursor可能导致内存问题,尤其是面对大量数据时。为了解决这一问题,文章推荐使用SSCursor,它作为迭代器逐条获取数据,避免一次性加载所有结果。然而,当在循环中连续使用SSCursor的fetchone时,可能会遇到警告`UserWarning: Previous unbuffered result was left incomplete`。为消除警告,建议根据查询需求选择合适类型的游标。此外,文中还提到在循环中正确管理和关闭游标的重要性,以防止出现错误。
摘要由CSDN通过智能技术生成

最近一直在用python操作mysql,个人感觉有了pymsql模块用起来还是比较方便的,但是关于其中一些游标的使用方法仍然是一知半解的,这次将问题总结下来,顺便附上自己的理解,但还有可能理解的不够透彻,后续如有更好的见解仍需补充;

首先对于pymysql模块其实很简单,就是一个用来操作数据库的库,用的时候只需要import pymysql就可以了,然后下面是游标的使用:

首先看一下这里的cursor其实就相当于mysql中的游标,当你做一些查询的时候需要用到cursor方法来进行,比如fetchone,fetchall,fetchmany等等。普通cursor方法进行fetch操作时候不管是fetchone还是fetchall都是获取所有的结果后然后从中提取,这就涉及到内存的使用问题,假如返回结果有上亿条数据,如果全都取到内存中内存就会爆掉。所以我对于大数据通常使用sscursor方法来操作数据,它相当于一个迭代器,每次只取一条,并且使用fetchone时候取完一条后再取下一条,这样不会乱;使用sscursor方法也很简单,仅仅将上面图片中的cur改为下面这个语句即可。

cur = conn.cursor(pymysql.cursors.SSCursor)

但是使用sscursor的时候要注意,但循环每次从数据库中查一条数据时候,并且使用sscursor.fetchone会报错,

UserWarning: Previous unbuffered result was left incomplete

个人理解通常调用sscursor都是执行一

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值