psycopg は、PostgreSQL の Database Adapter であるとともに、 DBAPI-2.0 に適合した モジュールでもあります。
以下にインストール手順を示しますが、
ことを前提として説明しますので、ディレクトリ名については適宜読み替えてください。
後で、コンパイルのためにヘッダーファイルを参照するので、通常の PostgreSQLのインストール手順のほかに
# make install-all-headers
を実行します。
http://www.egenix.com/files/python/eGenix-mx-Extensions.html から、egenix-mx-base-x.y.z* というファイル名の中で、最新のアーカイブのいずれかをダウンロードしてきて、
# /usr/local/bin/python2.1 setup.py install
でインストールします。
私がダウンロードしようとしたときには、最新は 2.0.4
で、何故か、egenix-mx-base-2.0.4.tar.gz
はアーカイブを解くことができなかった(gzip
フォーマットでないと言われてしまう)ので egenix-mx-base-2.0.4.zip
というファイルを取ってきて、インストールしました。
http://www.zope.org/Members/fog/psycopg から最新のアーカイブをダウンロードします。私が試みたときは psycopg-1.0.14.tar.gz が最新でした。
# ./configure --with-python=/usr/local/bin/python2.1
--with-zope=/usr/local/zope
--with-postgres-includes=/usr/local/pgsql/include
--with-postgres-libraries=/usr/local/pgsql/lib
--with-mxdatetime-includes=/usr/local/lib/python2.1/site-packages/mx/DateTime/mxDateTime
(以上実際は1行で入力)のあと
# make
# make install
# make install-zope
を実行します。
私がダウンロードしたバージョン 1.0.14 を、Cygwin環境で動かすためには、パッチが必要でした。 psycopg-1.0.14-cygwin.diff を当ててから、make をして下さい。
| 追加情報 2003/3/14 http://initd.org/Software/psycopg に 最新 stable として 1.1.2 がリリースされていますが、この中に、上記 patchが取り込まれたようです。 よって、1.1.2以降であれば、上記パッチを当てる必要はありません。 |
ZPsycopgDA も、psql コマンドと同様、環境変数 PGCLIENTENCODING を参照してしまいます。
そのため、例えば、PGCLIENTENCODING=SJIS と設定したコンソールから Zope の start スクリプトを起動すると、Zope内での検索結果が Shift_JIS で出力されてしまします。
私の Cygwin環境では .bashrc には
export PGCLIENTENCODING=SJIS
と入れておき Zope の start スクリプトでは
| fi PGCLIENTENCODING=EUC_JP exec /usr/local/bin/python2.1 $cwd/z2.py -D "$@" |
のように、1行加えています。
ZPsycopgDA の Connection Stringには 'dbname=foo user=bar password=secret' という感じで入れます。
pg_hba.conf の METHOD が trust になっている場合は、password=secret の部分は必要ありません。
パスワードによる認証を行いたい場合は、MD5 しか使えないようですので、 pg_hba.conf の METHODを 'md5' にします。
Python の DB モジュールとして psycopg を使いたい場合、psycopg のソースアーカイブの doc/examples/*.py にサンプルがありますので、それを参考にしてみて下さい。