| ■ | PostgreSQLのPythonインターフェース・PyGreSQL |
●前準備
PyGreSQLはPostgreSQLのソース配布の中に含まれていますが、
まず事前にPostgreSQLとPythonをインストールし、
コンパイルに使ったソースツリーを残しておきます。
ここではPostgreSQLのソースディレクトリを
/home/ushi/install/postgresql-7.0.2、
Pythonのホームディレクトリを
/home/ushi/install/Python-2.0
とし、PostgreSQLのインストールディレクトリを
/usr/local/pgsql、
Pythonライブラリのインストールディレクトリを
/usr/local/lib/python2.0
とします。
ディレクトリを変えた場合は以下の例を適宜読み替えてください。
| ■ | コンパイル |
% cd /home/ushi/install/postgresql-7.0.2/src/interfaces/python
% cp /home/ushi/install/Python-2.0/Misc/Makefile.pre.in .
*shared* _pg pgmodule.c -I/usr/local/pgsql/include -L/usr/local/pgsql/lib -lpq
% make -f Makefile.pre.in boot
% make
# cp pg.py /usr/local/lib/python2.0 # cp _pgmodule.so /usr/local/lib/python2.0/lib-dynload実際はこれらはPython処理系を起動して
>>>import sys >>>sys.pathと打ちこんだときに出てくるディレクトリならどこでも構わないのですが、 上のような位置が普通でしょう。
| ■ | つかってみよう |
#! /usr/local/bin/python
# PyGreSQLを使うには、モジュール「pg」をインポートします。
import pg
# PostgreSQLデータベースに接続するには、pg.connectを使います。
# これはpgobject(オブジェクト)を返します。
# 引数は全部で7つ(dbname, host, port, opt, tty, user, passwd)
# で、host以下は省略可能です。
con = pg.connect('partsdb')
# SQL文を実行するにはqueryメソッドを使います。
# 戻り値はSELECT文の場合はpgqueryobjectと呼ばれるオブジェクト、
# INSERT文なら新規行の行IDを表す整数、それ以外ならNoneです。
s = 'SELECT * FROM FAC_PARTS_MASTER'
qobj = con.query(s)
# SELECT文が返す行の数を事前に取り出すにはntuplesメソッドを使います。
print "rows=%d\n" % qobj.ntuples()
# SELECT文が返すフィールドを取り出すにはlistfieldメソッドを使います。
# 戻り値はフィールド名からなるたっぷるで、
# その長さが結果集合のフィールド数になります。
print str(qobj.listfields())
# qobjから結果を文字列で取り出すには、リストで取り出すgetresult()
# とディクショナリで取り出すdictresult()があります。
result = qobj.getresult()
for e in result:
print "%-8s | %-10s | %-20s | %3s | %6d | %-6s" % e
# 行を追加してみます。
s = """
INSERT INTO FAC_PARTS_MASTER VALUES
('CL127', 'CDE8K6218', 'トメネジ', 'B', 20, 'BNG422')
"""
con.query(s)
# closeメソッドでデータベース接続を終了します。
con.close()
# end.
|
セクションのサブメニューに戻る
(first uploaded 2000/11/11 last updated 2002/07/15)