銀月の符号

Python 使い見習いの日記・雑記

SQLAlchemy で Firebird その2

DB 接続まわり。

Engine

Firebird を使用するには create_engine にて firebird+kinterbasdb を指定する。次のようになる。

engine = create_engine('firebird+kinterbasdb://user:password@host/dbalias')

Firebird に限らない設定は Database Engine Options にて。とりあえず 3 つだけメモ。

connect_args
DBAPI の connect メソッドオプションを直接指定できる。 kinterbasdb だと connect={'charset': 'UTF8'} 指定で接続時のエンコーディングを指定したり。
echo
標準出力 sys.stdout に SQLAlchemy のログを出力する。どのような SQL 文が実行されたのかを知る最も簡単な方法だったりする。デフォルト False 。 dbengine-logging も参照。
encoding
SQLAlchemy レベルで 8 ビット文字列、ユニコード文字列間の変換を行う際に用いる文字コード。デフォルト 'utf-8' 。各 DBAPI 自身がユニコード変換機能を提供していることも多く、その場合は指定されていても無視される?

firebird+kinterbasdb 指定時のみ使える特有の設定は以下。

type_conv
type_conv code を指定する。デフォルトは 200 。 kinterbasdb 3.3 より 300 が加わった模様。
concurrency_level
concurrency-level を指定する。デフォルトは 1 。
enable_rowcount
Update, Delete クエリの後、実際に操作したデータ数を得られるようにする。デフォルトは True 。

マニュアルで関連する箇所は Engine Configuration とか Firebird

セッション

Using the Session

コネクションプーリング

Connection Pooling