0

我在 Windows 2k3 x64 上使用 pymssql 1.9.908 时遇到问题。我使用下面的代码来测试一个简单的查询。但是我收到此错误:

Traceback (most recent call last):
  File "<pyshell#5>", line 1, in <module>
    cur.execute('SELECT * from tbl_staticDetails')
  File "pymssql.pyx", line 296, in pymssql.Cursor.execute (pymssql.c:3246)
OperationalError: SQL Server message 4004, severity 16, state 1, line 1:
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.
DB-Lib error message 4004, severity 16:
General SQL Server error: Check messages from the SQL Server

这是我在 IDLE 中输入的示例代码:

>>> import pymssql
>>> conn = pymssql.connect(host='<IP reachable by my machine>', user='sa', password='<password>', database='<database nbame>')
>>> cur = conn.cursor()
>>> cur.execute('SELECT * from tbl_staticDetails')

任何想法都非常感谢。非常感谢!

4

1 回答 1

0

参考http://pymssql.sourceforge.net/faq.php

在 SQL 2000 SP4 或更新版本、SQL 2005 或 SQL 2008 中,如果执行返回 NTEXT 类型数据的查询,可能会遇到以下异常:_mssql.MssqlDatabaseError: SQL Server message 4004, severity 16, state 1, line 1: Unicode使用 DB-Library(例如 ISQL)或 ODBC 版本 3.7 或更早版本无法将纯 Unicode 排序规则中的数据或 ntext 数据发送到客户端。

这意味着 SQL Server 无法将 Unicode 数据发送到 pymssql,因为 C 的 DB-Library 的缺点。您必须将数据 CAST 或 CONVERT 转换为等效的 NVARCHAR 数据类型,这不会表现出这种行为。

于 2012-02-29T09:19:18.727 回答