我正在尝试使用以下方法在 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] = ? '
BTW 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 明智的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)