gpt4 book ai didi

python - 在 mysql 中禁用缓存结果(使用 python)

转载 作者:行者123 更新时间:2023-11-30 23:28:11 25 4
gpt4 key购买 nike

我正在使用 python 2.7、pyodbc 和 mysql 5.5。我在 window 上

我有一个返回数百万行的查询,我想分块处理它。使用 fetchmany 函数。

他是代码的一部分

import pyodbc
connection = pyodbc.connect('Driver={MySQL ODBC 5.1 Driver};Server=127.0.0.1;Port=3306;Database=XXXX;User=root; Password='';Option=3;')

cursor_1 = connection.cursor()
strSQLStatement = 'SELECT x1, x2 from X'

cursor_1.execute(strSQLStatement)
# the error occurs here

x1 = cursor_1.fetchmany(10)
print x1
connection.close()

我的问题:

  1. 我收到错误消息MySQL 客户端内存不足

  2. 我猜这是因为 cursor_1.execute 试图将所有内容读入内存并尝试了以下(一个接一个)但无济于事

    1. 在用户界面(ODBC – 管理工具)中,我勾选了“不缓存仅转发游标的结果”
    2. connection.query("SET GLOBAL query_cache_size = 40000")

我的问题:

  1. pyodbc 是否可以运行查询并仅按需提供结果?

  2. MySQL手册建议invoke mysql with the --quick option .不使用命令行时也可以这样做吗?

感谢您的帮助。

P.S:也欢迎提出替代 MySQL 模块的建议,但我使用的是可移植的 python,所以我的选择有限。

最佳答案

将 MySQLdb 与 SSCursor 结合使用将解决您的问题。

不幸的是,文档不是很好,但在 user guide 中提到了它你可以找到一个例子 in this stackoverflow question .

关于python - 在 mysql 中禁用缓存结果(使用 python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12085204/

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