データベース教育例5(プログラム言語からの接続2 PostgreSQL)

今回は、Pythonを使ってPostgreSQLへ接続します。
接続には拡張モジュールのpsycopg2を使います。

psycopg2の導入

psycopg2は、他のパッケージと同じくpipコマンドにて導入します。

D:>pip install psycopg2
Collecting psycopg2
Downloading psycopg2-2.8.4-cp38-cp38-win_amd64.whl (1.1 MB)
|████████████████████████████████| 1.1 MB 819 kB/s
Installing collected packages: psycopg2
Successfully installed psycopg2-2.8.4

psqlによるPostgreSQLへの接続

PostgreSQLへの接続は、以前の記事で書きましたが、概要を示しておきます。
1.pgAdminのインストール
ウンロード用のURLからpgAdminの媒体(zipファイル)をダウンロードしてインストールします。
2.パスの設定
pgAdminを導入するとpsqlは以下のディレクトリに存在しますので、パスと通しておきます。
 ($pgadmin4)\v4\runtime\psql.exe
   ※($pgadmin4)は、pgAdminインストールディレクトリ
3.psqlによる接続確認
コマンドラインからpsqlを起動して接続を確認します。接続が成功した画面を以下に示します。

D:>psql -d postgis -h sakura -p 5432 -U takamoto
Password for user takamoto:
psql (11.5, server 11.2 (Debian 11.2-1.pgdg90+1))
Type “help” for help.
postgis=#

プログラムの作成

準備が完了しましたので、接続用のプログラムを作成しましょう。
以下がサンプルとなります。

import psycopg2

# Db接続
conn = psycopg2.connect(
    host='sakura', 
    port=5432,
    database='postgis', 
    user='hoge', 
    password='hoge',
)
# カーソルの取得
cu = conn.cursor()
# クエリの実行
cu.execute('select tablename from pg_tables')

# フェッチ
result = cu.fetchall()
 
for row in result:
    print('TNAME :' + row[0])

# クローズ
cu.close()
conn.close()

4~10行目は、ユーザー名とパスワードなどの接続情報を指定します。
クエリを実行(14行目)してフェッチすると(17行目)、変数rowsに結果が返却されます。最後にカーソルをクローズ(23行目)します。
結果は配列で返却されますので、以下のように表示されます。

TNAME :pagc_lex
TNAME :pagc_rules
TNAME :tokyo_23ku_jgd2011_9
TNAME :station_9kei
TNAME :kokusei
TNAME :gaiku

まとめ

今回は、プログラムからデータベースへアクセスすることを、PythonとPostgreSQL、psycopg2を使って確認しました。
基本的な内容だったとはいえ、とても簡単に接続できました。