sql-server - Django <-> SQL Server 2005,文本编码问题

标签 sql-server django unicode odbc freetds

我尝试使用以下方法在 MS SQL Server 2005 上存储 Django 数据:

http://code.google.com/p/django-pyodbc/ (pyodbc + FreeTDS)

只要我存储由 ASCII 字符组成的字符串,一切就可以了。 当我使用unicode(例如'\xc5\x82')时,django 会抛出ProgrammingError:

ProgrammingError at /admin/cli/punktrejestracji/add/
('42000', '[42000] [FreeTDS][SQL Server]The incoming tabular data stream (TDS) protocol stream is incorrect. The stream ended unexpectedly. (4002) (SQLExecDirectW)')

跟踪的最后一个元素是:

params  ('\xc5\x82',)
self    <django.db.backends.sql_server.pyodbc.base.CursorWrapper object at 0x92ef8ec>
sql 'SELECT (1) AS [a] FROM [cli_punktrejestracji] WHERE [cli_punktrejestracji].[adres] = ? '

顺便说一句http://code.google.com/p/django-mssql/ Linux下好像不行, django-mssql 需要 pythoncom 库。我说得对吗?

最佳答案

我们将 Django 与 SQL Server 2005 一起使用。我们发现了与您相同的问题。

您使用什么 ODBC 驱动程序?免费TDS?

我们尝试为 linux/unix 找到一个好的 ODBC 驱动程序来使用,当 unicode 发挥作用时,它不会抛出上述错误(以及其他错误) - 但惨败了。我们测试的所有驱动程序(至少三个,如果你愿意的话我可以查出名字)都没有成功通过 django-pyodbc 处理 unicode 字符串。

我们最终所做的(听起来可能很悲伤)是决定在 Windows 服务器(Apache + mod_wsgi)上运行 Django 并使用 Microsoft 的 SQL Native ODBC 驱动程序。

当我们这样做时,它工作得很好 - unicode 明智的。

关于sql-server - Django <-> SQL Server 2005,文本编码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2192982/

相关文章:

c# - C# .NET 中的 UTF-16 安全子字符串

asp.net - 部署 ASP.NET 网站并更新 MSSQL 数据库,零停机时间

php - pdo-odbc 不适用于绑定(bind)值,nvarchar 和文本在等于运算符中不兼容

java - Spring数据库事务未在Db中提交数据

python - Django 按通用外键排序

Python 无法使用 surrogateescape 进行编码

python - 如何检测希伯来语中的回文?

mysql - 对另一个字段的不同值进行分组求和

python - 操作错误 : (2001, "Can' t 创建 UNIX 套接字 (24)")

python - “MySQL 服务器已经消失”,进程持久