PythonからPostgreSQLに接続する方法(psycopg2)

PythonからPostgreSQLに接続できるようになると、「ちゃんと動いた」という小さな達成感があります。

※この記事ではまず、PythonからPostgreSQLに接続する基本を、シンプルに確認するところまでを扱います。

ただ、その次に多くの人がこう感じます。

このデータベース、どこで動かし続ければいいんだろう?

ローカル環境での確認をベースにしていますが、ここで使うコードは、あとでVPSなどの環境に移してもほぼそのまま使えます。

※ このページは「Pythonでデータを扱えるようになりたい人」の最初の一歩として書いています。

目次

psycopg2とは?

psycopg2 は、PythonからPostgreSQLを操作するための定番ライブラリです。

SQLiteやMySQLと違い、PostgreSQL専用に設計されているのが特徴です。

とはいえ、最初から詳しく理解する必要はありません。

この段階では、

「PythonとPostgreSQLをつなぐ橋渡し役」

くらいの認識で十分です。

Python側のコードはとてもシンプルなので、「まず動かす → 慣れてきたら理解を深める」という順番がおすすめです。

SQLやデータベースにまだ慣れていない場合は、基礎がひと通りまとまった書籍を手元に1冊置いておくと助けになります。

▶ SQL 第2版 ゼロからはじめるデータベース操作(Amazon)

psycopg2を使ってPythonからPostgreSQLに接続する

psycopg2は、pipでインストールできます。

Bash
pip install psycopg2-binary

インストールが終わったら、PythonコードからPostgreSQLへ接続できるようになります。

接続コードの例

以下は、PythonからPostgreSQLに接続し、簡単なSQLを実行する最小構成のサンプルです。

Python
import psycopg2

conn = psycopg2.connect(
    host="localhost",
    port=5432,
    dbname="sample_db",
    user="sample_user",
    password="password"
)

cur = conn.cursor()
cur.execute("SELECT 1;")
result = cur.fetchone()

print(result)

cur.close()
conn.close()

(1,) が表示されれば、PythonからPostgreSQLへの接続は成功しています。

※ 実際の運用では、パスワードなどの接続情報は 環境変数で管理するのがおすすめです。

接続できないときのチェックポイント

うまく接続できない場合、Pythonコードよりも 環境側 に原因があることがほとんどです。

まずは、次の点を確認してください。

  • PostgreSQLが起動しているか
  • ホスト名・ポート番号は正しいか
  • データベース名・ユーザー名・パスワードは合っているか

ここが揃っていれば、Python側のコードはほぼそのままで動きます。

なぜSQLiteではなくPostgreSQLなのか

自宅PCでPythonを試す開発環境

Pythonで使えるデータベースとして、SQLiteという選択肢もあります。

SQLiteは手軽で、小さなスクリプトや検証用途にはとても便利です。

ただ、次のような場面ではPostgreSQLの方が扱いやすくなります。

  • 複数の環境から同じDBに接続したい
  • Webアプリとして使いたい
  • データを継続的に蓄積したい

最初はSQLiteで始めて、成長のタイミングでPostgreSQLに移行するという流れも自然です。

この構成でできること・できないこと

ここまでの構成で、できることは次の通りです。

  • PythonスクリプトからDBを操作する
  • データの保存・取得を行う
  • FlaskなどのWebアプリに発展させる

一方で、次のようなことはこの段階では考えなくて大丈夫です。

  • 高負荷な本番運用
  • 複雑なDB設計や最適化
  • パフォーマンスチューニング

まずは「PythonからDBに触れる感覚」をつかむことを優先してください。

このあと多くの人がつまずくポイント

PythonからPostgreSQLに接続できたあと、多くの人が次に悩みます。

  • PCを閉じるとデータベースが止まる
  • 別の環境から接続できない
  • Webアプリから使いたくなった

これらは、Pythonコードの問題ではありません。

「PostgreSQLをどこで動かしているか」という置き場所の問題です。

次の一歩:PostgreSQLを安定して動かすには

学習や小さな開発を続けるなら、PostgreSQLが常に起動している環境を1つ用意しておくと楽になります。

Pythonからの接続が安定するので、私はこの用途専用にVPSを1台用意しました。

ローカル環境で詰まる時間が減り、Pythonのコードそのものに集中しやすくなりました。
(学習や小さな開発がかなり楽になります)

※ VPS上にPostgreSQLを構築する手順は、次の記事で詳しくまとめていく予定です。

▶ Python用途に使いやすいVPSはこちら

自分のPCで試したい人へ

もちろん、「まずは自分のPCだけで試したい」という段階でも、まったく問題ありません。

この記事の内容を使って、ローカル環境で接続できるところまで確認できれば十分です。

その先に進みたくなったときに、環境を切り替えればOKです。

まずは「PythonでDBにつながった!」という成功体験を最優先に。

そのうえで、次に「どこで動かすか」を考えると、学習がブレにくくなります。

まとめ

PythonからPostgreSQLに接続できるようになると、扱えるデータの幅が一気に広がります。

最初はローカル環境でも構いませんが、作業が増えてきたら「データベースの置き場所」を見直すだけで、Pythonの扱いやすさが変わります。

次の記事では、VPS上にPostgreSQLを用意し、Pythonから接続するところまでを 最短ルート で解説する予定です。

ここまでできていれば、Pythonからデータベースを扱うための入口はクリアです。

あとは、「どこで動かし続けるか」を選ぶだけです。

この先もPythonでデータを扱っていくなら、PostgreSQLを安定して動かせる環境を1つ用意しておくと安心です。

Pythonからの接続が安定し、環境で悩む時間が減るので、私はPython用途としてシンプルに使えるVPSを選びました。

▶ PythonとPostgreSQLに使えるVPSを見る

目次