PythonでHeroku Postgresを操作する

2021.08.28
2024.03.24
データベース
HerokuHeroku Postgrespsycopg2Python

はじめに

PythonからHeroku Postgresを操作する方法を解説します。

Heroku Postgresの準備については下記を参照してください。

Heroku Postgresを使ってみる

Heroku Postgresを使ってみる

はじめに Heroku Postgresを作成するまでを解説していきます。 Herokuとは

PythonでHeroku Postgresを利用

PythonでHeroku Postgresを操作する場合は、PostgreSQLにアクセスできるライブラリであるpsycopg2を利用します。

Heroku Postgres | Heroku Dev Center

Heroku Postgres | Heroku Dev Center

The Heroku Postgres add-on is a production database service, offering PostgreSQL, read-only follower databases, snapshots for forks, and local client access.

超基本的な使い方

psycopg2.connectでデータベースに接続し、cursorでデータベースを操作するためのカーソルを開きます。

次にexecuteでクエリを実行し、commitでトランザクションを終了します。

最後に接続とカーソルを閉じます。

1import os
2import psycopg2
3
4DATABASE_URL = os.environ.get('DATABASE_URL')
5
6conn = psycopg2.connect(DATABASE_URL)
7cur = conn.cursor()
8
9title = '【GCP】Cloud Functionsを定期実行したい'
10url = 'https://amateur-engineer-blog.com/cloud-functions-periodic-execution/'
11cur.execute(
12    "INSERT INTO articles(title, url) VALUES(%s, %s)", (title, url))
13conn.commit()
14
15cur.close()
16conn.close()

使い方のサンプル

基本的なデータ操作のサンプルを紹介していきます。

サンプルで利用するデータベースは以下で解説しているものを利用します。

Heroku Postgresでテーブル作成と基本的なデータ操作

Heroku Postgresでテーブル作成と基本的なデータ操作

はじめに Heroku Postgresで**テーブルを作成して、データ追加や取得などの基本的な

データの追加

withを利用することでclosecommitを使うことなく、記述できます。

1import os
2import psycopg2
3
4DATABASE_URL = os.environ.get('DATABASE_URL')
5
6title = '【GCP】Cloud Functionsを定期実行したい'
7url = 'https://amateur-engineer-blog.com/cloud-functions-periodic-execution/'
8
9with psycopg2.connect(DATABASE_URL) as conn:
10    with conn.cursor() as curs:
11        curs.execute(
12            "INSERT INTO articles(title, url) VALUES(%s, %s)", (title, url))

複数データを一括で追加する場合はextras.execute_valuesを利用します。

1import os
2import psycopg2
3from psycopg2 import extras
4
5DATABASE_URL = os.environ.get('DATABASE_URL')
6
7insert_list = [("【GCP】PythonでCloud Functions", "https://amateur-engineer-blog.com/cloud-functions-python/"),
8               ("【AtCoder】Pythonでキューを使う",
9                    "https://amateur-engineer-blog.com/python-queue/"),
10               ("【Flask】簡単なAPIを実装", "https://amateur-engineer-blog.com/flask-api/")]
11
12with psycopg2.connect(DATABASE_URL) as conn:
13    with conn.cursor() as curs:
14        extras.execute_values(
15            curs,
16            "INSERT INTO articles(title, url) VALUES %s", insert_list)

データの取得

fetchallで実行結果をまとめて取得できます。

1import os
2import psycopg2
3
4DATABASE_URL = os.environ.get('DATABASE_URL')
5
6with psycopg2.connect(DATABASE_URL) as conn:
7    with conn.cursor() as curs:
8        curs.execute("SELECT * FROM articles")
9        curs.fetchall()

データの更新

1import os
2import psycopg2
3
4DATABASE_URL = os.environ.get('DATABASE_URL')
5
6id = '5'
7description = 'GCPのCloud Functionsを定期実行する方法を解説していきます。'
8
9with psycopg2.connect(DATABASE_URL) as conn:
10    with conn.cursor() as curs:
11        curs.execute(
12            "UPDATE articles SET description=%s WHERE id=%s", (description, id))

データの削除

1import os
2import psycopg2
3
4DATABASE_URL = os.environ.get('DATABASE_URL')
5
6id = '5'
7
8with psycopg2.connect(DATABASE_URL) as conn:
9    with conn.cursor() as curs:
10        curs.execute('DELETE FROM articles WHERE id=%s', id)

参考

Support

\ この記事が役に立ったと思ったら、サポートお願いします! /

buy me a coffee
Share

Profile

author

Masa

都内のIT企業で働くエンジニア
自分が学んだことをブログでわかりやすく発信していきながらスキルアップを目指していきます!

buy me a coffee