Я пытаюсь подключиться к базе данных MSSQL с помощью python из коробки Linux (Python 2.7, Ubuntu 11.04). Вывод, который я получаю, усекается до 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, это фактически удаленный сервер, который не принадлежит нашей системе.
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 TEXT
и CAST(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
Есть мысли как это можно решить?
text size
в соответствии с направленным? - person Bryan   schedule 09.08.2012TEXTSIZE
в SQL? - person Bryan   schedule 09.08.2012pymssql
,pyodbc
или оба? - person Bryan   schedule 09.08.2012TEXTSIZE
для SQL есть в моем ответе. Любопытно, почему вы используете оба пакета для одного и того же запроса? - person Bryan   schedule 10.08.2012