python - 如何使用 Python pypyodbc 获取整个 VARCHAR(MAX) 列

标签 python sql-server pyodbc pypyodbc

我有一个 Python 程序,它使用 ODBC 连接来连接到 MSSQL 数据库。我使用的 Python 库是 pypyodbc。

这是我的设置:

  • Windows 8.1 x64
  • SQL Server 2014 x64
  • python 2.7.9150
  • PyPyODBC 1.3.3
  • ODBC 驱动程序:SQL Server Native Client 11.0

我遇到的问题是,当我查询一个包含 varchar(max) 列的表时,内容被截断了。

我是 pypyodbc 的新手,我一直在疯狂地搜索,但找不到任何关于如何防止这种情况在 pypyodbc 甚至 pyodbc 中发生的信息。至少不是我一直在使用的搜索词,而且我不知道要尝试使用哪些其他短语。

我什至尝试将 SET TEXTSIZE 2147483647; 添加到我的 SQL 查询中,但数据仍然被截断。

如何防止这种情况发生?或者你能给我指出正确的方向吗?

更新:

因此,我尝试在我的 SQL 查询中执行转换。当我执行 CAST(my_column as VARCHAR(MAX)) 时,它会在同一位置截断。但是,如果我执行 CAST(my_column as VARCHAR(8000)),它会给我一个更大的文本集,但它仍然会截断一些内容。如果我尝试执行任何大于 8000 的操作,我会收到一条错误消息,指出 8000 是我可以使用的最大值。有人知道这里会发生什么吗?使用 MAX 不起作用似乎很奇怪。

最佳答案

好吧,我最终解决了问题。我发现此链接与类似问题有关,只是不在 python 中,他们发现问题出在 SQL Server native 客户端驱动程序上。他们建议改用 SQL Server 标准驱动程序。

因此,我将我的 ODBC 连接字符串中的驱动程序从 SQL Server Native Client 11.0 更改为 SQL Server,它运行良好!我正在获取 MSSQL 数据表中 VARCHAR(MAX) 列的全部内容。

我真的希望这对遇到此问题的其他人有用!祝你好运!

这是链接: http://www.sqlservercentral.com/Forums/Topic1534163-391-1.aspx

关于python - 如何使用 Python pypyodbc 获取整个 VARCHAR(MAX) 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33878291/

相关文章:

python - 如何在 sphinx autodoc 中有选择地隐藏模块文档字符串?

python - 快速将数组分配给长度相等的 n 个 bin

sql - 需要帮助理解一些执行计划

python - 在 OSX 10.9 (Mavericks) 上安装 pyodbc 失败

python - 我可以为重置索引指定名称吗?

sql-server - 如果同时使用美元和括号符号,T-SQL 会出错

sql-server - SQL Server Express LocalDb 2019 的安静(无人值守)安装

python - 在Python中,是否可以使用Active Directory密码身份验证连接Azure SQL Server?

sql-server - 在使用 UnixODBC、FreeTDS 和 PyODBC 时遇到问题

python - AppEngine/OS X - vendor.add ('lib' ) 只是不工作? (加上部分解决方案)