到目前为止,我正在与 Python(和 Twisted)一起使用 Sybase SQL Anywhere 12 数周,我什至让我的东西正常工作。
只剩下一个烦恼:如果我在 CentOS 5 上使用自定义 Python 2.7.1(这是部署平台)运行我的脚本,我得到的结果是UTF-8。
如果我在我的 Ubuntu 机器(Natty Narwhal)上运行它,我会在latin1中得到它们。
不用说,我更愿意以 Unicode 格式获取我的所有数据,但这不是这个问题的重点。:)
两者都是 64 位的盒子,都有自定义的 Python 2.7.1。使用 UCS4 和自定义构建的 unixODBC 2.3.0。
我在这里不知所措。我找不到任何文档。是什么让 pyodbc 或 unixODBC 在这两个盒子上表现不同?
确凿的事实:
- 蟒蛇:2.7.1
- 数据库:SQL 无处不在 12
- unixODBC:2.3.0(2.2.14 的行为相同),使用相同的标志自编译
- ODBC 驱动程序:来自 Sybase。
- CentOS 5 给了我 UTF-8,Ubuntu Natty Narwhal 给了我 latin1。
我的 odbc.ini 看起来像这样:
[sybase]
Uid = user
Pwd = password
Driver = /opt/sqlanywhere/lib64/libdbodbc12_r.so
Threading = True
ServerName = dbname
CommLinks = tcpip(host=the-host;DoBroadcast=None)
我只使用 DNS='sybase' 进行连接。
蒂亚!