gpt4 book ai didi

python - 使用 pymysql 从服务器中逐行获取行

转载 作者:太空宇宙 更新时间:2023-11-03 14:12:28 26 4
gpt4 key购买 nike

我有一个查询返回许多行,并且由于存在需要提取的 BLOB,每行都很大。

我的查询如下:

import pymysql
db = pymysql.connect(...)
with db.cursor() as cur:
cur.execute("select value from my_blobs")
for row in cur:
...

我天真地期望迭代 cur,而不是调用 fetchall(),可以避免一次获取所有数据并在进程中耗尽内存。但是,我看到的是,在调用 cur.execute() 期间,即在我尝试通过 fetchall() 获取结果之前,内存就耗尽了, fetchone() 或通过迭代 cur

我的问题是,如何才能一一获取我的 Blob ?我是否必须在应用程序中进行迭代并对每个 blob 进行新查询?那么如果在 execute() 期间查询整个数据,那么 fetchone 或迭代 cur 有什么用呢?

最佳答案

默认游标类是缓冲数据。幸运的是,有一个无缓冲版本:pymysql.cursors.SSCursor。尝试运行 db.cursor(pymysql.cursors.SSCursor) 而不是 db.cursor()。

来自 API reference for SSCursor :

Unbuffered Cursor, mainly useful for queries that return a lot of data, or for connections to remote servers over a slow network.

Instead of copying every row of data into a buffer, this will fetch rows as needed. The upside of this is the client uses much less memory, and rows are returned much faster when traveling over a slow network or if the result set is very big.

关于python - 使用 pymysql 从服务器中逐行获取行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48405752/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com