【发布时间】:2014-08-25 20:22:13
【问题描述】:
设置:我在 Windows 2012 客户端上使用 Python 3.3。
我有一个使用 pyodbc 运行的选择查询,它没有通过 fetchall() 返回任何结果。我知道查询工作正常,因为我可以将其取出并从 Microsoft SQL Management Studio 运行它而不会出现任何问题。
我还可以从选择列表中删除一列,查询将返回结果。对于有问题的数据库行,此列包含大量 XML 数据(> 10,000 个字符),因此似乎存在一些缓冲区溢出问题导致 fetchall() 失败,尽管它没有抛出任何异常.我试过用谷歌搜索,我看到了关于提高缓冲区大小的配置选项的传言,但我无法确切地确定如何做到这一点,或者解决方法是什么。
是否有我可以使用的配置选项,或者 pyodbc 的任何替代方案。
免责声明:我现在只使用 python 大约 2 周,所以我 我仍然是菜鸟,尽管我已经尽一切努力研究 我的问题彻底被证明是难以捉摸的:
顺便说一句,我尝试使用 odbc 而不是 pyodbc,但相同的查询会引发这个奇怪的错误,谷歌也没有帮助我解决
[ERROR] 执行 Select 查询时出现异常:[][Negative size passing to PyBytes_FromStringAndSize]
【问题讨论】:
-
您使用的是什么操作系统和堆栈?如果在 Linux 上,您是否将 FreeTDS / unixODBC 与 pyodbc 一起使用?
-
我在 Windows 2012 上。不确定您所说的堆栈是什么意思。
-
无法在使用 Python 3.4.1 和 SQL Server Native Client 11.0 的 Windows 7 64 位上重现。正在使用什么 ODBC 驱动程序和版本?发布产生错误的代码。
-
好吧,我没有发布任何具体的内容,因为它似乎是特定于数据的。如果没有数据库中的相应数据,给出查询将无济于事。但是,我在连接字符串中使用 SQL Server Native Client 11.0。我会看看我是否可以挑选一些文章在原始问题中发布
-
我使用AdventureWorks2008R2数据库,
Production.Illustration表尝试重现。该表中的Diagram列包含大于10,000 个字符的XML 类型数据。您可能想尝试从该示例数据库中重现问题。
标签: python-3.x pyodbc