Я борюсь с Sybase SQL Anywhere 12 вместе с Python (и Twisted) уже несколько недель, и у меня даже все заработало.
Остается только одна неприятность: если я запускаю свой скрипт на 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 Anywhere 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'.
ТИА!