簡體   English   中英

使用PYODBC和FreeTDS從SQL Server檢索記錄

[英]Retrieving records from SQL Server with PYODBC and FreeTDS

我有一個連接到本地SQL Server(2012,我相信嗎?)並運行“ SELECT * from ...”查詢的python腳本。 運行腳本時,出現錯誤消息:

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)')

閱讀其他文章后,我嘗試通過在腳本中添加以下內容來建議另一個線程:

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

但是,當我這樣做時,我得到的是unicode轉義字符串(我認為這就是它們的名字……),而不是數據。 這是當我從表中打印一行時的一個示例:

(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則沒有這兩個問題。 我檢查了兩台計算機上的odbc.ini和odbcinst.ini文件,它們是完全相同的,因此我不知道是什么原因引起的。 兩個虛擬機都在運行Debian 7。

沒關系...我智障。 當我在無法正常運行的VM上用Python設置VirtualEnv時,我不小心使用了Python 2.6而不是Python 2.7,這反過來僅允許安裝PYODBC 2.x,而不是PYODBC3.x。 PYODBC的較舊版本導致了此問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM