当查询返回的列包含太多数据时,pyodbc fetchall()不返回任何结果

时间:2014-08-25 20:22:14

标签: python-3.x pyodbc

设置:我在Windows 2012客户端上使用Python 3.3。 我有一个使用pyodbc运行的选择查询,它不会通过fetchall()返回任何结果。我知道查询工作正常,因为我可以将其从Microsoft SQL Management Studio中取出并且没有任何问题 我还可以从选择列表中删除一列,查询将返回结果。对于有问题的数据库行,此列包含大量XML数据(> 10,000个字符),因此似乎有一些缓冲区溢出问题导致fetchall()失败,尽管它没有扔任何例外。我试过谷歌搜索,我已经看到有关配置选项的传言,以提高缓冲区大小,但我还没有能够确定如何做到这一点,或解决方法是什么。

是否有我可以使用的配置选项,或pyodbc的任何替代选项。

  

免责声明:我现在只使用python大约2周了所以我   虽然我已经尽一切努力研究,但我仍然是相当的菜鸟   我的问题彻底证明这个问题难以理解:

另一方面,我尝试使用odbc而不是pyodbc,但同样的查询引发了这个奇怪的错误谷歌并没有帮助我解决

  

[ERROR]执行Select查询时出现异常:[] [传递给PyBytes_FromStringAndSize的负大小]

1 个答案:

答案 0 :(得分:1)

通过更改我的SQL连接字符串

似乎解决了这个问题

FROM:

DRIVER={SQL Server Native Client 11.0}

TO:

DRIVER={SQL Server}