🔰
PythonでPostgreSQLとやりとりする
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で指定している接続文字列はさまざまな指定方法があります。
上記コードで、カーソルをオープンできました。
あとは、カーソルのメンバーを使って、操作を行ないます。
データの取得
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の公式ドキュメントは以下のリンクから確認できます。
Discussion
ご丁寧な説明、ありがとうございます。
こちらのスニペットですが、スペルミスがあるようで
import psycopg2
がimport pyscopg2
になっておられます(yとsが入れ替わっています)。おそらく多くの方がハマる(スペルミスを疑わず、pip install しても動作しないので、pythonのimport pathを調べるなどに至りました)と思うので、修正いただけると幸いです。どうぞよろしくお願いいたします。
ご指摘ありがとうございます!
修正いたしました。