[PR]テレビ番組表
今夜の番組チェック


PostgreSQLのPythonインターフェース・psycopg

 PostgreSQLのPythonモジュールをもう1つ紹介しましょう。 psycopgです。 これもオープンソースで開発されているモジュールで、 主にUNIX環境、Zopeプロダクトへの応用を中心に開発が進められているようですが、 Jason Ericksonさんによって、Windowsバイナリが配布されています。 psycopg自身のホームページはこちらです。 基本的な使い方などについてはこちらからソース配布を入手して、 中をのぞいてみるとよいでしょう。 ただしドキュメントはTeX形式ですが (-_-;

Windowsへのインストール
 次の環境で試しました。
プラットフォームpsycopgPython
MS-Windows XP Home Edition1.0.82.2

  1. Pythonの拡張モジュール「mxDateTime」をインストールします。 mxDateTimeはPythonで日付・時刻データを扱う機能を持つ拡張として広く知られるフリーウェアで、 こちらから入手できます。 インストールは簡単なので省略しますが、 お持ちのPythonのバージョン(2.0、2.1、2.2)に合ったものをダウンロードして下さい。
  2. win-psycopgのページから、 「win-psycopg-bin.zip」をダウンロードし、適当なディレクトリで展開します。
  3. 出てきた「libpq.dll」と「psycopg.pyd」を $PYTHON_HOME\DLLs ディレクトリにコピーします。

コーディング例

# 2002/08/03
import psycopg

def es(s):
  u = unicode(s, "japanese.euc_jp")
  return u.encode("japanese.shift_jis")

dsn = "dbname=udb host=192.168.1.67 port=5432 user=urano password=urano399"
#dsn = ""
con = psycopg.connect(dsn)
# カーソルの作成
cur = con.cursor()
# SQL文で問い合わせを実行します。
s = "SELECT KANJI_NAME, MAIL_ADDRESS FROM USERS"
cur.execute(s)

# 結果を1行ずつ取得
r = cur.fetchone()
while r != None:
  print "%-10s | %-40s" % (es(r[0]), r[1])
  r = cur.fetchone()

# カーソルを閉じます。
cur.close()

# closeメソッドでデータベース接続を終了します。
con.close()
# end.

コーディング例です。pyPgSQLの例とほとんど変わりませんが、 注意が必要なのはやはりconnectメソッドのパラメータです。 PostgreSQLに接続するためのパラメータは、 psycopgではDSNなる単一の文字列で指定します。 DSNといってもJDBCのURLのように形式化したものではなく、 単に「パラメータ=値」の組を空白を挟んで連結しただけのものです。 パラメータ名はdbname、host、port、user、password なので、それぞれ適切なものを指定します。 ODBCなどの他のフォーマットに慣れている方は特に、 カンマやセミコロンで区切らないように要注意、ですね。

セクションのサブメニューに戻る
(first uploaded 2002/08/04 last updated (not ever))