Форум сайта python.su
Для обработки данных из Sql Server 2005 использую модуль pymssql последней версии в python2.5
MScon = pymssql.connect(host='192.168.1.1', database='school', user='sa', password='1') # подключаюсь
MScur = MScon.cursor() # объявляю курсор
proc = ‘exec ms_pg_test’
MScur.execute(proc) # выполняю хранимую процедуру которая храниться на сервере
word = MScur.fetchall() # вытягиваю результаты
for i in range(len(word)):
print word # # вывожу на печать
MScon.close()
Проблема в том что модуль pymssql просто урезает каждую строку которую он встречат и считает что она превышает определенную длину. Наткнулся на данную проблему и не знаю как ее обойти или где нужно подкоректировать настройки модуля. Т.е. например ожидаю получить строчку типа:
insert into Users (id, Surname, Name, Email, Kind, Address, WorkPhone, HomePhone, MobilePhone, RegionID, SelectedKind, WhenceID, WhenceCustom, StudyType, IsActive, ob_no, pwd, RegDate, RegCourses, cdkey, IsDeleted, HasForumAccess, SettlementTypeId, SchoolTypeId, SchoolNumber, SchoolName, Grade, SettlementName, CanViewWorkComments, tstamp) values (74130 , ‘Кодикова’ , ‘Елена Сергеевна’ , ‘kodikova’ , 3 , ‘г. Москва’ , ‘' , ’' , ‘' , 1171 , 0 , 73 , ’' , 1 , ‘1’ , 36540 , decode('0100453af263992d3417b1d3da8638cfbe5216f7bb2d30d3d476e35b7f428fa848e7f2d10658f216a52cb0a4eec3','hex') , ‘2003-11-12 16:19:21’ , ‘' , ’' , ‘0’ , ‘1’ , 1 , 1 , ‘' , ’' , ‘' , ’' , ‘0’ , decode('0000000003adfd80','hex') );
а взамен получаю что то типа:
insert into Users (id, Surname, Name, Email, Kind, Address, WorkPhone, HomePhone, MobilePhone, RegionID, SelectedKind, WhenceID, WhenceCustom, StudyType, IsActive, ob_no, pwd, RegDate, RegCourses, cdkey, IsDeleted, HasForumAccess, SettlementTypeId, School
Кто с этим сталкивался?! Посоветуйте плз! А то грустно все как-то получаеться!
Отредактировано (Сен. 9, 2008 13:09:50)
Офлайн
Как пишут на сайте:
FAQ / Troubleshooting - really useful page
Q: Strings longer than 255 characters get truncated. Why?
A: All strings longer than 255 characters get truncated. It appears that types varchar and nvarchar are affected. You have to cast them to text to get what you expect. This is a gift from Microsoft, an expression of their lack of support for DB-Library. See also this question. For the curious - for strings longer than 255 characters DB-Library function dbdatlen() returns 255, as well as function dbcollen() which holds maximum possible length for the column. dbdata() also returns already truncated string.
Офлайн
В самом деле!
Большое спасибо! =)
Офлайн