0
点赞
收藏
分享

微信扫一扫

python操作mysql流式读取数据(你没见过的黑科技)

南柯Taylor 2021-09-19 阅读 64
一、mysql流式读取
# coding=utf-8
from DBUtils.PooledDB import PooledDB
import pymysql, sys

reload(sys)
sys.setdefaultencoding("utf-8")
MYSQL_DB_NAME = "xxxx"
MYSQL_DB_USER = "xxxx"
MYSQL_DB_PWD = "xxxx"

if sys.platform == 'win32':
    MYSQL_DB_HOST = "xxxx"
elif sys.platform == 'darwin':
    MYSQL_DB_HOST = "xxxx"
else:
    MYSQL_DB_HOST = "xxxx"

pool = PooledDB(pymysql, host=MYSQL_DB_HOST, user=MYSQL_DB_USER, passwd=MYSQL_DB_PWD, db='adinsights_v3', port=3306,
                charset="utf8", cursorclass=pymysql.cursors.SSCursor)

conn = pool.connection()
cs = conn.cursor()
sql = "SELECT * from material_new"
try:
    cs.execute(sql)
    while True:
        result = cs.fetchone()
        if result:
            print(result)
        else:
            break
except:
    pass
cs.close()
conn.close()

1、使用pymysql.cursors.SSCursor代替默认的cursor。可以使用以上代码,或者这样写:conn.cursor(pymysql.cursors.SSCursor)
2、使用fetchone去每次只获得一行,别使用fetchall。也可以使用fetchmay,但是这样其实是多次调用fetchone。

二、mysq流式介绍

对于SSCursor有一个错误的理解,就是SSCursor是服务端一次性读出所有数据然后一条一条返给客户端,其实不是这样的,这个cursor实际上没有缓存下来任何数据,它不会读取所有数据到内存中,它的做法是从储存块中读取记录,并且一条一条返回给你。这里有一个更适合的名字:流式游标。

今天的代码到这里就介绍完了,还是想说:"做一个爱分享的程序员,大家有什么疑问欢迎留言",如果觉得我的文章可以,欢迎关注和点赞。谢谢各位!
举报

相关推荐

Python黑科技:WiFi破解

0 条评论