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

PostgreSQL

PostgreSQLにスクレイピングデータを保存するために、
Pythonからデータベースへ接続する方法を調べました。

PythonでPostgreSQLに接続する場合は、
一般的に psycopg2 というライブラリを使います。

今回は

  • psycopg2のインストール
  • PythonからPostgreSQLへ接続
  • データ取得テスト

までをまとめておきます。


psycopg2とは

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

これを使うことで

  • データ取得
  • INSERT
  • UPDATE
  • DELETE

などのSQL操作がPythonから実行できるようになります。

Djangoでも内部的にPostgreSQL接続に使われているライブラリです。


psycopg2をインストール

まずはPython環境にpsycopg2をインストールします。

pip install psycopg2-binary

インストールが完了すれば準備OKです。


PostgreSQL接続情報

接続には以下の情報が必要になります。

項目内容
データベース名作成したDB
ユーザーPostgreSQLユーザー
パスワードユーザーパスワード
ホスト通常はlocalhost
ポート5432

database : lottery
user : postgres
password : password
host : localhost
port : 5432

PythonからPostgreSQLへ接続

基本的な接続コードです。

import psycopg2conn = psycopg2.connect(
database="lottery",
user="postgres",
password="password",
host="localhost",
port="5432"
)print("PostgreSQLに接続しました")

このコードを実行してエラーが出なければ
接続成功です。


データ取得テスト

次にSQLを実行してデータを取得してみます。

import psycopg2conn = psycopg2.connect(
database="lottery",
user="postgres",
password="password",
host="localhost",
port="5432"
)cur = conn.cursor()cur.execute("SELECT version();")record = cur.fetchone()print("PostgreSQLバージョン:", record)cur.close()
conn.close()

これを実行すると

PostgreSQLバージョン: ('PostgreSQL 14.x',)

のように表示されます。


データをINSERTする例

スクレイピングしたデータを保存する場合は、
INSERTを使います。

cur.execute(
"INSERT INTO lottery_data (draw_date, number) VALUES (%s, %s)",
("2026-03-09", "123")
)conn.commit()

ポイントは

%s

を使うことです。

これはSQLインジェクション対策にもなります。


接続を閉じる

最後に接続を閉じます。

cur.close()
conn.close()

これを忘れると接続が残ることがあります。


まとめ

PythonからPostgreSQLに接続するには
psycopg2 を使うのが一般的です。

基本的な流れは

  1. psycopg2インストール
  2. connectでDB接続
  3. cursorでSQL実行
  4. commitで保存

という形になります。

自分の環境では
ナンバーズ3・ナンバーズ4のスクレイピングデータを
PostgreSQLに保存しています。

次は

  • Pythonスクレイピング → PostgreSQL保存
  • Django + PostgreSQL接続

あたりも記事にまとめていこうと思います。

コメント

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