2014-06-18 3 views
1

로컬 SQL Server (2012, 나는 믿을 까?)에 연결하고 "SELECT * from ..."쿼리를 실행하는 python 스크립트가 있습니다. 내가 스크립트를 실행하면, 나는 오류 말하는 얻을 : 그러나PYODBC 및 FreeTDS를 사용하여 SQL Server에서 레코드 가져 오기

os.environ['TDSVER'] = '7.0' 

:

File "/home/mdrouin/dev/redbus/wyndham.py", line 643, in connect 

cursor.execute("SELECT * from [RentalDB].[dbo].[Clients]") 

pyodbc.ProgrammingError: ('42000', '[42000] [FreeTDS][SQL Server]Unicode data in a Unicode-only collation or ntext data cannot be sent to clients using DB-Library (such as ISQL) or ODBC version 3.7 or earlier. (4004) (SQLExecDirectW)') 

을 다른 게시물을 읽은 후, 나는 또 다른 스레드가 내 스크립트에 다음을 추가하여 언급 한 제안을 시도 나는 이것을한다. 데이터 대신에 유니 코드 이스케이프 문자열을 얻는다. 이것은 내가 테이블에서 행을 인쇄 할 때의 예입니다

(u'\U00320035\U00380033\U00360033\U00300030\U00300030\U00300030\U00320031\U00320039\U00350039', u'\U00640041\U006d0061\U00520020\U004d0020\U00740061\U00690074\U0067006e\U0079006c\U00280020\U00590057\U0032004e\U00300031', u'\U00640061\U006d0061\U00390073\U006d006d', u'\U006f006a\U006e0068\U00650064\U00720065\U00390065\U00330034', u'\U00330032\U0031002e\U002e0039\U00310035\U0031002e\U00350031') 

내가하지 않는 것은 내가 다른 VM 정확히 동일하게 설정하는 VM에서이 작업을 실행하고 있다는 것입니다, 하나 다른 VM은 그렇지 않지만 VM은 잘 실행됩니다. 다른 VM에는 이러한 문제가 없습니다. 두 컴퓨터에서 odbc.ini와 odbcinst.ini 파일을 검사했는데 정확히 동일하므로 문제의 원인이 무엇인지 모릅니다. 두 VM 모두 데비안 7을 실행 중입니다.

답변

1

신경 쓰지 마세요. 내가 작동하지 않는 VM에서 Python으로 VirtualEnv를 설정할 때 실수로 Python 2.7이 아닌 Python 2.6이 사용되어 PYODBC 3.x가 아닌 PYODBC 2.x 만 설치되었습니다. 이전 버전의 PYODBC가 문제를 일으켰습니다.

관련 문제