私はSybaseSQLAnywhere 12をPython(およびTwisted)と一緒に数週間戦っていますが、自分のものも機能するようになりました。
煩わしさは1つだけ残っています。デプロイメントプラットフォームであるカスタムPython2.7.1を使用してCentOS5でスクリプトを実行すると、UTF-8として結果が得られます。
Ubuntuボックス(Natty Narwhal)で実行すると、latin1で取得できます。
言うまでもなく、すべてのデータをUnicodeで取得したいのですが、それはこの質問のポイントではありません。:)
どちらも64ビットボックスで、どちらにもカスタムPython2.7.1があります。UCS4とカスタムビルドのunixODBC2.3.0を使用します。
私はここで途方に暮れています。そのドキュメントが見つかりません。pyodbcまたはunixODBCが2つのボックスで異なる動作をする理由は何ですか?
難しい事実:
- Python:2.7.1
- DB:SQL Anywhere 12
- unixODBC:2.3.0(2.2.14は同じように動作しました)、同一のフラグで自己コンパイル
- ODBCドライバー:Sybaseからのオリジナル。
- CentOS 5はUTF-8を提供し、UbuntuNattyNarwhalは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'を使用して接続します。
TIA!