TLDR: Unicode ドライバーを使用しないでください。ansi を使用してください!
Pandas/SQLAlchemy ではなく、TurbODBC 経由で DB に接続したいと考えています。
私が今までにしたこと:
- unixodbc のインストール
- ターボDBCのインストール
- iODBC のインストール
- ODBC 用の Mysql コネクタのインストール
- iODBC Admin でのポートとサーバーの構成
- ユーザーとパスを使用した iODBC Admin での接続のテスト: 正常に動作しました!
今、私は次のことをしようとしました:
from turbodbc import connect
connect(dsn="mydsn", user="myuser", password="mypass")
次のエラーメッセージが表示されました。
---------------------------------------------------------------------------
DatabaseError Traceback (most recent call last)
<ipython-input-2-bbbc3a4c2880> in <module>()
----> 1 connect(dsn="mydsn", user="myuser", password="mypass")
/Users/myuser/anaconda2/lib/python2.7/site-packages/turbodbc/exceptions.pyc in wrapper(*args, **kwds)
31 return f(*args, **kwds)
32 except InternError as e:
---> 33 raise DatabaseError(str(e))
34 return wrapper
DatabaseError: ODBC error
state: H
今何をすべきかわからず、このエラーに関する問題は見つかりませんでした。
誰かが私を助けてくれたらとても嬉しいです、よろしくお願いします!;-)
アップデート
RでRODBCを試してみましたが、うまくいきました。これはTurbODBCの問題だと確信していますが、今では(C++だと思います)コードをデバッグすることはできません....
更新 #2
設定ファイルの Mysql Connector for ODBC ドライバーを.odbc.ini
ansi ドライバーに変更しました。ユニコードテーブルを含むデータベースのため、これはユニコードである必要があると思いました...しかし、ansiを使用すると、設定ファイルで手動でエンコーディングをutf8に設定した場合にのみ、すべて正常に動作します。エラーが発生する理由や方法はわかりませんが、この回避策は機能します。