【问题标题】:Retrieving records from SQL Server with PYODBC and FreeTDS使用 PYODBC 和 FreeTDS 从 SQL Server 检索记录
【发布时间】:2014-08-09 01:38:03
【问题描述】:

我有一个 python 脚本,它连接到本地 SQL Server(我相信是 2012 年?)并运行“SELECT * from ...”查询。当我运行脚本时,我收到一条错误消息:

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 设置完全相同的 VM 上运行它,其中一个 VM 运行良好,而另一个则没有。另一个 VM 没有这些问题。我检查了两台计算机上的 odbc.ini 和 odbcinst.ini 文件,它们完全相同,所以我不知道可能导致问题的原因。两个虚拟机都运行 Debian 7。

【问题讨论】:

    标签: python sql sql-server pyodbc freetds


    【解决方案1】:

    没关系...我智障了。当我在不工作的虚拟机上用 Python 设置 VirtualEnv 时,我不小心使用了 Python 2.6 而不是 Python 2.7,这反过来又只安装了 PYODBC 2.x 而不是 PYODBC 3.x。旧版本的 PYODBC 导致了问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-11
      • 1970-01-01
      • 2020-07-20
      • 2016-10-22
      • 1970-01-01
      • 2012-07-12
      • 1970-01-01
      相关资源
      最近更新 更多