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 を使うのが一般的です。
基本的な流れは
- psycopg2インストール
- connectでDB接続
- cursorでSQL実行
- commitで保存
という形になります。
自分の環境では
ナンバーズ3・ナンバーズ4のスクレイピングデータを
PostgreSQLに保存しています。
次は
- Pythonスクレイピング → PostgreSQL保存
- Django + PostgreSQL接続
あたりも記事にまとめていこうと思います。


コメント