Python

【Python】Cloud9環境でpsycopg2を使ってPostgreSQLの操作する

こんにちは。湖山です。

最近、PythonでPostgreSQLに接続するプログラムを作成したので、備忘録として残しておきます。

psycopg2とは

psycopg2は、Python で PostgreSQL へ接続するための有名なライブラリになります。

Python DB API 2.0仕様の完全な実装とスレッドセーフです。(複数のスレッドが同じ接続を共有できます)
これは、多数のカーソル作成および破棄や、多数の同時「INSERT/UPDATE」の操作など、高度にマルチスレッド化されたアプリケーション向けに設計されています。

Psycopg is the most popular PostgreSQL adapter for the Python programming language. Its core is a complete implementation of the Python DB API 2.0 specifications. Several extensions allow access to many of the features offered by PostgreSQL.

https://www.psycopg.org/

psycopg2は、公式のPostgreSQL Client LibraryであるlibpqのCラッパーです。
したがって、機能・速度的な問題の心配はなさそうです。

psycopg2の前提条件

psycopg2のビルドには、いくつかの前提条件(Cコンパイラ、一部の開発パッケージ)が必要です。
詳細についてはこちらをご確認ください。

  • Cコンパイラ
  • Pythonヘッダーファイル
  • libpqヘッダーファイル
  • pg_configファイル

psycopg2のインストール

インストール

# (Cloud9の場合)pg_configを含むパッケージをインストール
$ sudo yum install postgresql-devel

# psycopg2をインストール
$ pip install psycopg2

Cloud9環境では、「Error: pg_config executable not found.」のエラーが発生したため、pg_configを含むパッケージをインストールしました。環境によっては不要かもしれません。

クイックインストール

インストールに失敗する場合はこちらのクイックインストール版を試してみてください。

コンパイラや外部ライブラリを必要としないスタンドアロンパッケージを使用します。
以下のコマンドでコンパイル済みのバイナリバージョンのモジュールをインストールします。

$ インストール
$ pip install psycopg2-binary

バイナリバージョンのモジュール は、開発とテストには実用的な選択肢になります。
ただし、本番環境ではソースから構築されたパッケージを使用することをお勧めします。

psycopg2の動作確認

動作確認環境

  • Cloud9 (Amazon Linux 2)
  • python 3.9.10
  • PostgreSQL: 12.9
  • psycopg2: 2.9.3

サンプルプログラム

動作確認用のサンプルプログラムです。

import psycopg2

# DB接続情報
DB_NAME = 'データベース名'
DB_HOST = 'ホスト名'
DB_USER = 'ユーザー名'
DB_PASS = 'パスワード'


# DB接続関数
def connect():
    return psycopg2.connect(
        dbname=DB_NAME,
        host=DB_HOST,
        user=DB_USER,
        password=DB_PASS
    )


# 準備
con = connect()
cur = con.cursor()

# SQL実行
cur.execute("select version()")
print(cur.fetchone())

# 後処理
cur.close()
con.close()

上記のプログラムを実行します。

$ python test.py 
('PostgreSQL 12.9 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 7.3.1 20180712 (Red Hat 7.3.1-12), 64-bit',)('PostgreSQL 12.9 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 7.3.1 20180712 (Red Hat 7.3.1-12), 64-bit',)

このようにPostgreSQL のバージョンが取得できたら、動作確認完了です。

参考ページ

■psycopg2 公式ドキュメント
https://www.psycopg.org/docs/

■psycopg2 – PyPI
https://pypi.org/project/psycopg2/

ABOUT ME
湖山 貴裕
はじめまして。 二児のお父さんプログラマーです。最近キャンプにも興味あり。夏には庭でキャンプしようともくろみ中。ボドゲ好き。チョコ好き。茶道経験者。 2012年大学卒業→IT企業就職 Java,VB.NET, C#, javascript等の企業向けシステム開発/主にバックエンドを担当/AWSを少しかじる→2020年フリーランスエンジニアへ転身 広島でAWS案件にて楽しく活動中