🔰

PythonでPostgreSQLとやりとりする

2023/06/13に公開
2

PythonでPostgreSQLデータベースに接続してデータのやりとりをするには、psycopg2ライブラリがよく使われているようです。

簡単に使い方を説明していきます。

ライブラリのインストール

まずは、このライブラリを利用するために、pipでインストールしましょう!

pip install psycopg2

ただし、この方法ではpsycopg2そのもののビルドが必要です。

psycopg2そのものはlibpqのラッパーとして、C言語で実装されています。つまり、ビルドにはCのコンパイラなどが必要になります。

それら依存関係なく利用するには次のようにインストールします。

pip install psycopg2-binary

ビルド済みのライブラリがインストールされます。

データベースへ接続する

データベースへ接続するためには、以下のようにします。

import psycopg2

# データベースとのコネクションを確立します。
connection = psycopg2.connect("host=localhost dbname=postgres user=<your db username> password=<your db password>")

# カーソルをオープンします
cursor = connection.cursor()

connectで指定している接続文字列はさまざまな指定方法があります。

https://www.psycopg.org/docs/module.html

上記コードで、カーソルをオープンできました。

あとは、カーソルのメンバーを使って、操作を行ないます。

データの取得

cursor.execute("SELECT * FROM your_table_name")
query_result = cursor.fetchall()
print(query_result)

データの更新

sql = "INSERT INTO your_table_name (column1, column2, column3) VALUES (%s, %s, %s)"
curosor.execute(sql, (column1_value, column2_value, column3_value))

psycopg2では、パラメーターはSQL文の中に %s と記述しておくことで、パラメーター化することができます。

それらに値をセットするには、 cursor.execute()の第二引数で、タプルを設定します。

データの取得行数や、更新時に影響があった行数を取得する

sql = "<ANY SQL>"
cursor.execute(sql)
updated_row_count = cursor.rowcount

psycopg2の公式ドキュメントは以下のリンクから確認できます。

https://www.psycopg.org/docs/

コラボスタイル Developers

Discussion

kikutakoukikutakou

ご丁寧な説明、ありがとうございます。
こちらのスニペットですが、スペルミスがあるようで
import psycopg2import pyscopg2になっておられます(yとsが入れ替わっています)。
おそらく多くの方がハマる(スペルミスを疑わず、pip install しても動作しないので、pythonのimport pathを調べるなどに至りました)と思うので、修正いただけると幸いです。どうぞよろしくお願いいたします。