python 使用 Pyodbc 查询 Vertica 时的缓冲区大小

python buffer size when querying Vertica using Pyodbc

我正在使用 pyodbc 连接到 Vertica DB,然后我正在使用游标执行查询,但查询的结果包括一个巨大的文本字段,执行运行但它从来没有 returns 任何东西,也不例外。当我在 row=cursor.fetchall() 处调试和断点时,我可以看到这一点它只是空的,就像这样“[]”

如果我尝试在这个巨大的文本字段中使用另一个字符较少的数据集,那么执行就会运行,我会得到数据。我怀疑它与检索数据时的缓冲区大小有关,但我不知道。关于如何执行此操作的任何建议?也许以某种方式增加缓冲区大小?

谢谢

import requests, pypyodbc, json, pyvertica, pyodbc
from pyvertica import connection
    conn=pyodbc.connect("DSN=HPVertica;UID=muffin;PWD=muffin")
    cursor=conn.cursor()
    query="SELECT field1_int, field2_bigText  FROM someTable WHERE field1_int=103;"

    try:
        cursor.execute(query)
    except Exception as e:
        print('err: {}'.format(e.args[0]))
        print(': {}'.format(e.args[1]))

    row=cursor.fetchall()

我相信这是 pyodbc 中的一个已知问题,至少我确信我之前已经看到过这个问题和一些随机补丁。我刚刚查看了 pyodbc 代码,看起来他们最近在几周前 this commit 中解决了这个问题。

它似乎不在 3.0.10 的最新(截至 post)标签中。您要么必须尝试最先进的技术,要么稍等片刻才能将其包含在未来的标签中。 (或者我想根据那个提交自己修补它)。

我使用 pypyodbc 而不是 pyodbc 解决了这个问题,不再有缓冲区错误