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の動作確認を説明しました。