データベース教育例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を使って確認しました。
基本的な内容だったとはいえ、とても簡単に接続できました。