psycopg2をインストールしてPythonからPostgreSQLを操作する

psycopg2をインストールしてPythonからPostgreSQLを操作する プログラミング

PythonからPostgreSQLにアクセスするには、psycopg2を利用します。

本記事の内容

  • psycopg2とは?
  • psycopg2のシステム要件
  • psycopg2のインストール
  • psycopg2の動作確認

それでは、上記に沿って解説していきます。

psycopg2とは?

psycopg2とは、PostgreSQLデータベースアダプタです。
簡単に言うと、PythonからPostgreSQLへアクセスするためのライブラリとなります。

そして、psycopg2はlibpq(PostgreSQL client library)のCラッパーです。
したがって、速度的には問題なしと言えます。

機能的には、一般的なSQL文実行はもちろん可能です。
加えて、「COPY TO/COPY FROM」に対応しているのが特徴となります。

あと、PythonにおけるPostgreSQL関連のライブラリでは1番人気というところですね。
10年以上の歴史もあります。

以上、psycopg2に関しての説明でした。
次は、psycopg2のシステム要件を確認していきます。

psycopg2のシステム要件

現時点(2021年5月)でのpsycopg2の最新バージョンは、2.8.6となります。
この最新バージョンは、2020年9月7日にリリースされています。

システム要件に関しては、次の4つがポイントになります。

  • OS
  • Pythonバージョン
  • PostgreSQLバージョン
  • Cコンパイラ

それぞれを以下で説明します。

OS

サポートOSに関しては、以下となります。

  • Windows
  • Linux

macOSが、サポートOSに入っていません。
でも、Linuxに対応しているので何とかなりそうですけどね。

Pythonバージョン

サポート対象となるPythonのバージョンは以下。

  • Python 2.7
  • Python 3.4~3.8

Python 3.9に関しては、単純にテストしていないだけでしょう。
そもそも、Python 3.9の公開日は2020年10月5日ですから。

今回は、以下のバージョンで検証しています。

>python -V
Python 3.9.4

PostgreSQLバージョン

PostgreSQL server versions from 7.4 to 12

公式では上記のバージョンが記載されています。
現時点でのPostgreSQLの最新メジャーバージョンは、13となります。

そして、13の公開日は2020年9月24日です。
これもPythonのバージョンと同じく、時期がズレてテストしていないだけでしょう。

ちなみに、私は以下でインストールしたバージョン(13.3)で検証しています。

Cコンパイラ

これが、もっとも注意すべき要件になります。
psycopg2は、Cのラッパーということでした。

そのため、インストールの際にCコンパイラが必要となります。
WindowsにおけるCコンパイラについては、以下の記事で解説しています。

まとめ

各バージョンに関しては、新しいモノは基本的にOKと言えます。
OKとは、サポート対象に記載がなくても対応可能ということです。

現時点(2021年5月)における、各最新バージョンは以下。

  • Python 3.9.4
  • PostgreSQL 13.3

上記でpsycopg2が上記で動くことを確認済です。

以上、psycopg2のシステム要件の説明でした。
次は、psycopg2をインストールしていきましょう。

psycopg2のインストール

最初に、現状のインストール済みパッケージを確認しておきます。

>pip list
Package    Version
---------- -------
pip        21.1.1
setuptools 56.2.0

次にするべきことは、pip自体の更新です。
pipコマンドを使う場合、常に以下のコマンドを実行しておきましょう。

python -m pip install --upgrade pip

では、psycopg2インストールです。
psycopg2のインストールは、以下のコマンドとなります。

pip install psycopg2

インストールには、そこまで時間がかかりません。
では、どんなパッケージがインストールされたのかを確認しましょう。

>pip list
Package    Version
---------- -------
pip        21.1.1
psycopg2   2.8.6
setuptools 56.2.0

依存関係のあるパッケージは、ないようですね。
これはこれでシンプルと言えます。

インストールが失敗する場合

インストールが失敗する場合は、以下のコマンドを試してみてください。

pip install psycopg2-binary

この場合は、以下のパッケージがインストールされます。

>pip list
Package         Version
--------------- -------
pip             21.1.1
psycopg2-binary 2.8.6
setuptools      56.2.0

パッケージ名からわかるように、バイナリを利用します。
ビルド済みのバイナリをダウンロード(自動的)して利用するということです。

このインストール方法なら、macOSも行けそうですね。

まとめ

Cコンパイラが適切に動けば、問題なくインストールはできるはずです。
それでも、失敗する場合はあるかもしれません。
その場合は、バイナリを利用する方法を試してみましょう。

以上、 psycopg2のインストールを説明しました。
最後に、psycopg2の動作確認を行います。

psycopg2の動作確認

psycopg2の動作確認を行うサンプルコードです。

import psycopg2

dsn = "dbname=データベース名 host=ホスト名(IPアドレスもOK) user=ユーザー名 password=パスワード"

conn = psycopg2.connect(dsn)
cur = conn.cursor()

cur.execute("select version()")
print(cur.fetchone())

cur.close()
conn.close()

上記を実行すれば、以下のような表示となります。

('PostgreSQL 13.3 (Ubuntu 13.3-1.pgdg20.04+1) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0, 64-bit',)

これは、PostgreSQLのバージョンをSQLで取得した結果です。
この結果が出れば、動作確認はOKと言えます。

なお、 PostgreSQL側で外部接続許可の設定は前提となります。
実は、この設定がもっとも複雑でわかりにくいところかもしれません。
その場合は、次の記事を参考にしてください。

以上、psycopg2の動作確認を説明しました。

タイトルとURLをコピーしました