在 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.
我已经安装了 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.