开发者

Pyodbc utf-8 bind param error With FreeTDS and unixODBC

FreeTDS version 0.82

unixODBC version 2.3.0

pyodbc version 2.1.8

freetds.conf:

tds version = 7.0
client charset = UTF-8

using Servername in the odbc.ini (which for some crazed reason made a difference in getting unixODBC to recognize the client charset in freetds)

I'm able to pull utf8 data correctly and can update with the string inline ie:

UPDATE table
SET col = N'私はトカイ大好き'
WHERE id = 182333369

But

text = u'私はトカイ大好き'

cursor.execute("""
    UPDATE table
    SET column = ?
    WHERE id = 182333369 
""", text)

Fails with:

pyodbc.Error: ('HY004', '[HY004] [FreeTDS][SQL Server]
Invalid data t开发者_开发知识库ype (0) (SQLBindParameter)')

If I add:

text = text.encode('utf-8')

I get the following error:

pyodbc.ProgrammingError: ('42000', '[42000] [FreeTDS][SQL Server]The incoming tabular data stream (TDS) protocol stream is incorrect. The stream ended unexpectedly. (4002) (SQLExecDirectW)')

Any ideas as to where things have gone astray?


Unicode support was reworked in pyodbc 3.0.x. Try testing with the latest source (3.0.2-beta02, etc.)

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜