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 解决了这个问题,不再有缓冲区错误
我正在使用 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 解决了这个问题,不再有缓冲区错误