在 255 个字符后切断的 pymssql 问题

pymssql issue with cutting off after 255 characters

我已经安装了 pymssql(使用 _mssql)版本 1.0.2,我注意到当我开始查看结果集中的字段时,它似乎切断了最大 255 个字符的大文本字段。我在互联网上搜索了任何提及此内容的内容,但一无所获——我不知道为什么此时要切断字符串,但数据库肯定会返回比这更长的字符串。感谢任何帮助 - 是否可以像版本升级一样简单,或者这是我需要解决的问题?

谢谢!

根据您的要求,我将插入一个模糊的代码片段,详细说明我在说什么 - 这是 Ubuntu 系统上的 Python 脚本:

import sys
import shutil
import fileinput
import os
import _mssql

myServer = 'hostIP'
myUID = 'userID'
myPW = 'mypass'
myDB = 'theDBName'
theID  = 'ABC123'

myConn = _mssql.connect(server=myServer, user=myUID, password=myPW, database=myDB)
myConn.execute_query("SELECT method FROM myTable WHERE id = '" + theID + "'")

for myRow in myConn:
  method = myRow["method"]
  len(method) # This prints out 255
  len(myRow["method")) # This prints out 255

myConn.close()

仅供参考:从数据库返回的字符串长度超过 900 个字符,但我只看到它的前 255 个。

这似乎是 known issue 与 pymssql(或更确切地说,底层协议)。

varchar and nvarchar data is limited to 255 characters, and longer strings are silently trimmed. This is known limitation of TDS protocol. A workaround is to CAST or CONVERT that row or expression to text data type, which is capable of returning 4000 characters.