我在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')
非常感谢任何想法。 非常感谢!
答案 0 :(得分:0)
请参阅http://pymssql.sourceforge.net/faq.php:
在SQL 2000 SP4或更高版本,SQL 2005或SQL 2008中,如果您执行查询 返回NTEXT类型数据,您可能会遇到以下异常: _mssql.MssqlDatabaseError:SQL Server消息4004,严重级16,状态1,第1行:仅Unicode归类或ntext数据中的Unicode数据 无法使用DB-Library(如ISQL)或ODBC发送给客户端 版本3.7或更早版本。
这意味着SQL Server无法将Unicode数据发送到pymssql, 由于DB-Library for C的缺点,你必须CAST或 将数据转换为等效的NVARCHAR数据类型,而不是 表现出这种行为。