gpt4 book ai didi

带有 MS SQL 的 Python - 截断的输出

转载 作者:太空狗 更新时间:2023-10-30 02:48:42 24 4
gpt4 key购买 nike

我尝试从 Linux box (Python 2.7Ubuntu 11.04) 使用 python 连接到 MSSQL DB。我收到的输出被截断为 500 个字符。请参阅下面的脚本和配置。如何解决?我认为 ODBC 驱动程序或附近的问题。

代码(pyodbc、pymssql):

conn = pymssql.connect(host='my_remote_host', user='ro_user',
password='password', database='current', as_dict=True)
cur = conn.cursor()
cur.execute(sql)
for i in cur:
print i
conn.close()

cnxn = pyodbc.connect(driver='FreeTDS', server='my_remote_host', database='current', uid='ro_user', pwd='password')
cursor = cnxn.cursor()
cursor.execute(sql)
rows = cursor.fetchall()
...
cnxn.close()

我没有对 MS SQL DB 的写入权限,它实际上是不属于我们系统的远程服务器。

SQL:

sql = '''
SELECT Req.ID,
ShReq.Summary AS [Short Name],
ShReq.ALM_SharedText AS [Text],
Req.ContainedBy,
Req.DocumentID
FROM CurMKS..ALM_Requirement Req
JOIN CurMKS..ALM_SharedRequirement ShReq ON Req.[References] = ShReq.ID
WHERE DocumentID = 1111111'''

问题出在 ShReq.ALM_SharedText 字段。它被截断为 255 个字符,但使用 convert(text,ShReq.ALM_SharedText) AS TEXTCAST(ShReq.ALM_SharedText AS TEXT) 等转换我将截断增加到 500 个字符。但是,有些字段的文本长度超过 500 个字符,它们会被截断。

ODBC 设置:

/etc/odbc.ini:

[MKS]
#Driver=FreeTDS
Driver=/usr/lib/odbc/libtdsodbc.so
Description=Database
Trace=No
Server=my_remote_host
Port=1433
Database=current
UID=ro_user
PWD=password
TDS Version=8.0

/etc/odbcinst.ini:

[FreeTDS]
Description=FreeTDS
Driver=/usr/lib/odbc/libtdsodbc.so
UsageCount=1

/etc/freetds/freetds.conf:

[global]
tds version = 8.0
; dump file = /tmp/freetds.log
; debug flags = 0xffff
; timeout = 10
; connect timeout = 10
; text size = 2097152


[mksserver]
host = my_remote_host
port = 1433
tds version = 8.0
client charset = UTF-8

有什么想法可以解决吗?

最佳答案

freetds.confglobal 部分中的 text size 更改为最大(4294967295 字节):

[global]
tds version = 8.0
text size = 4294967295

还必须将 SQL 中的 TEXTSIZE 设置为最大值(2147483647 字节):

sql = """
SET TEXTSIZE 2147483647;
SELECT Req.ID,
ShReq.Summary AS [Short Name],
ShReq.ALM_SharedText AS [Text],
Req.ContainedBy,
Req.DocumentID
FROM CurMKS..ALM_Requirement Req
JOIN CurMKS..ALM_SharedRequirement ShReq ON Req.[References] = ShReq.ID
WHERE DocumentID = 111111;
"""

关于带有 MS SQL 的 Python - 截断的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11882910/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com