【悩み】
・PythonでPostgreSQLに接続する手順を知りたい。
・Pythonからデータ追加、更新、削除、取得はできる?
・PythonでPostgreSQLを操作する場合、どのライブラリを使えばいい?
こういった「悩み」に答えます。
【本記事の内容】
① PythonでPostgreSQLに接続するための準備
② PythonからPostgreSQLに接続する手順
③ PythonでPostgreSQLに対して基本的なデータ操作をする方法
本記事を実践したことで、筆者は15分以内でPythonでPostgreSQLに接続でき、基本的なデータ操作(insert/select/update/delete)ができました。
記事の前半では「PostgreSQLをPythonから操作するためのライブラリのインストール」から「接続」までの手順を解説します。
記事の後半では「データ追加、取得、更新、削除といった基本的なデータ操作をPythonから実施する手順」をご紹介します。
この記事を読み終えることで、「PythonでPostgreSQLに格納されたデータを取得しデータ分析できる」を状態になります。
PythonでPostgreSQLに接続するための準備
「PythonでPostgreSQLに接続するための準備」に関してご紹介します。
【準備の流れ】
手順1:PostgreSQLのインストール
手順2:Pythonのインストール
手順3:PythonのPostgreSQLライブラリをインストール
手順4:PostgreSQLへの接続確認
手順5:PostgreSQL上にテーブルを作成
以降で、上記の各項目に関して解説します。
PostgreSQLのインストール
まずは、PostgreSQLをインストールしましょう。
インストール手順に関しては、以下の記事をご覧ください。
>> 【コピペOK】5ステップでPostgreSQL13をインストールする方法
>> 【5分でわかる】Windows版PostgreSQLのインストール方法
PostgreSQLをインストール済みである場合、本手順を省略してください。
Pythonのインストール
以下の記事を参考にし、お使いのパソコンやサーバーにPythonをインストールしましょう。
>> 【ubuntu向け】pyenvでPythonをインストールする手順【簡単】
>> 【コピペOK】pyenvでPythonをインストールする手順【Linux用】
>> 【最短5分】PyAutoGUIをWindowsにインストールする手順の「手順1:Pythonのインストール」を参照
>> 【環境構築】インストーラーでMacOSにPythonをインストール
既にPythonをインストールされている方は、本手順を省略してください。
PythonのPostgreSQLライブラリをインストール
PythonからPostgreSQLを操作するためには、下記のいずれかのライブラリが必要です。
【ライブラリの一覧】
・psycopg2(公式サイト)
・psycopg2-binary(公式サイト)
・py-postgresql(公式サイト)
上記の公式サイトを確認したところ、psycopg2のスターがpy-postgresqlのスターよりだいぶ多いです。よって、今回は、より多くの人に注目されている「psycopg2」ライブラリを使います。
ちなみに、「psycopg2」と「psycopg2-binary」の違いは、以下となります。
【psycopg2とpsycopg2-binaryの違い】
・psycopg2:pip install時にビルドとコンパイルが実行される
・psycopg2-binary:pip install時にビルドとコンパイルが実行されない
psycopg2をインストールするために、コマンドプロンプトまたは端末上で以下のコマンドを順番に実行してください。
$ sudo pip install psycopg2
$ pip list | grep PyMySQL
psycopg2 (2.9.5)
コマンド実行後、「psycopg2 (バージョン)」が表示された場合、「正常にpsycopg2をインストールできた」と判断できます。
PostgreSQLへの接続確認
これからPythonで接続しようとしているPostgreSQLが起動しているかを確認しましょう。
確認手順に関しては、以下の記事「データ追加と参照をする方法」の箇所をご覧ください。
>> 【コピペOK】5ステップでPostgreSQL13をインストールする方法
PostgreSQL上にテーブルを作成
PostgreSQL上にテーブルを作成しましょう。
テーブル作成方法に関しては、以下の記事「テーブルを作成」箇所をご覧ください。
>> 【コピペOK】5ステップでPostgreSQL13をインストールする方法
以降の解説では、インストールしたPostgreSQL上で以下の設定をしたという想定で解説します。
・ユーザー名:postgres
・パスワード:postgres
・データベース名:testdb
・作成テーブル:mymovie
・稼働ポート:5432
・ホスト名:127.0.0.1
上記の流れで、「PythonでPostgreSQLに接続するための準備」ができました。
PythonからPostgreSQLに接続する手順
「PythonからPostgreSQLに接続する手順」に関してご紹介します。
【接続までの流れ】
手順1:PythonでPostgreSQLに接続するプログラムを作成
手順2:作成した「PythonでPostgreSQLに接続するプログラム」の動作確認
以降で、上記の各項目に関して解説します。
PythonでPostgreSQLに接続するプログラムを作成
PythonでPostgreSQLに接続するプログラムは、以下となります。以下のプログラムをpostgresql-connect-test.pyというファイル名で保存しましょう。
import psycopg2
# 設定値
users = 'postgres' # DBにアクセスするユーザー名
dbnames = 'testdb' # 接続するデータベース名
passwords = 'postgres' # DBにアクセスするユーザーのパスワード
# PostgreSQLへ接続
conn = psycopg2.connect(" user=" + users +" dbname=" + dbnames +" password=" + passwords, host='127.0.0.1', port=5432)
# PostgreSQLの接続を終了
conn.close()
print("PythonからPostgreSQLに接続できました。")
作成した「PythonでPostgreSQLに接続するプログラム」の動作確認
先ほど実装したPythonでPostgreSQLに接続するプログラムを実行するために、以下のコマンドを実行しましょう。
$ python3 postgresql-connect-test.py
PythonからPostgreSQLに接続できました。
コマンド実行後、「PythonからPostgreSQLに接続できました。」が出力された場合、「PythonからPostgreSQLに接続できた」と判断できます。
上記の手順で、簡単にPythonでPostgreSQLに接続できました。
以降で、Pythonからデータ追加、取得、更新、削除する方法を解説します。
PythonでPostgreSQLに対して基本的なデータ操作をする方法
「PythonでPostgreSQLに対して基本的なデータ操作をする方法」に関してご紹介します。
【基本的な使い方】
① データを登録:insert
② データを取得:select
➂ データを更新:update
④ データを削除:delete
以降で、上記の各項目に関してご説明します。
データを登録:insert
Pythonで「PostgreSQLにデータを登録する」プログラムは、以下となります。プログラム中の「適宜変更」と書いてある部分は、自分用に書き換えてください。
import psycopg2
# 設定値
users = 'postgres' # DBにアクセスするユーザー名(適宜変更)
dbnames = 'testdb' # 接続するデータベース名(適宜変更)
passwords = 'postgres' # DBにアクセスするユーザーのパスワード(適宜変更)
# PostgreSQLへ接続
conn = psycopg2.connect(" user=" + users +" dbname=" + dbnames +" password=" + passwords, host='127.0.0.1', port=5432)
# PostgreSQLへデータの登録
cur = conn.cursor()
cur.execute("INSERT INTO mymovie VALUES (2, 'b')") # (適宜変更)
conn.commit()
cur.close()
# PostgreSQLの接続を終了
conn.close()
print("PythonからPostgreSQLにデータを書き込みました。")
上記のプログラムを「postgresql-data-regist-test.py」というファイル名で保存しましょう。
その後、以下のコマンドを実行し、PythonからPostgreSQLにデータを登録してください。
# python postgresql-data-regist-test.py
PythonからPostgreSQLにデータを書き込みました。
上記のように「PythonからPostgreSQLにデータを書き込みました。」と表示された場合、「PythonからPostgreSQLにデータを登録できた」と判断できます。
データを参照:select
Pythonで「PostgreSQLからデータを取得する」プログラムは、以下となります。プログラム中の「適宜変更」と書いてある部分は、自分用に書き換えてください。
import psycopg2
# 設定値
users = 'postgres' # DBにアクセスするユーザー名(適宜変更)
dbnames = 'testdb' # 接続するデータベース名(適宜変更)
passwords = 'postgres' # DBにアクセスするユーザーのパスワード(適宜変更)
# PostgreSQLへ接続
conn = psycopg2.connect(" user=" + users +" dbname=" + dbnames +" password=" + passwords, host='127.0.0.1', port=5432)
# PostgreSQLからデータの取得
cur = conn.cursor()
cur.execute('SELECT * FROM mymovie;') # (適宜変更)
results = cur.fetchall()
print(results)
cur.close()
# PostgreSQLの接続を終了
conn.close()
上記のプログラムを「postgresql-data-get-test.py」というファイル名で保存しましょう。
その後、以下のコマンドを実行し、PythonからPostgreSQLにデータを取得してください。
# python postgresql-data-get-test.py
[(1, 'a'), (2, 'b')]
上記のように「登録されたデータ」が表示された場合、「PythonからPostgreSQLのデータを取得できた」と判断できます。
データを更新:update
Pythonで「PostgreSQLのデータを更新する」プログラムは、以下となります。プログラム中の「適宜変更」と書いてある部分は、自分用に書き換えてください。
import psycopg2
# 設定値
users = 'postgres' # DBにアクセスするユーザー名(適宜変更)
dbnames = 'testdb' # 接続するデータベース名(適宜変更)
passwords = 'postgres' # DBにアクセスするユーザーのパスワード(適宜変更)
# PostgreSQLへ接続
conn = psycopg2.connect(" user=" + users +" dbname=" + dbnames +" password=" + passwords, host='127.0.0.1', port=5432)
# PostgreSQLのデータ更新
cur = conn.cursor()
cur.execute("UPDATE mymovie SET name = 'c';") # (適宜変更)
conn.commit()
cur.close()
# PostgreSQLの接続を終了
conn.close()
print("PythonからPostgreSQLのデータを更新しました。")
上記のプログラムを「postgresql-data-update-test.py」というファイル名で保存しましょう。
その後、以下のコマンドを実行し、PythonからPostgreSQLにデータを取得してください。
# python postgresql-data-update-test.py
PythonからPostgreSQLのデータを更新しました。
# python postgresql-data-get-test.py
[(1, 'c'), (2, 'c')]
上記のように「更新されたデータ」が表示された場合、「PythonからPostgreSQLのデータを更新できた」と判断できます。
データを削除:delete
Pythonで「PostgreSQLからデータを削除する」プログラムは、以下となります。プログラム中の「適宜変更」と書いてある部分は、自分用に書き換えてください。
import psycopg2
# 設定値
users = 'postgres' # DBにアクセスするユーザー名(適宜変更)
dbnames = 'testdb' # 接続するデータベース名(適宜変更)
passwords = 'postgres' # DBにアクセスするユーザーのパスワード(適宜変更)
# PostgreSQLへ接続
conn = psycopg2.connect(" user=" + users +" dbname=" + dbnames +" password=" + passwords, host='127.0.0.1', port=5432)
# PostgreSQLのデータ削除
cur = conn.cursor()
cur.execute("delete from mymovie;")# (適宜変更)
conn.commit()
cur.close()
# PostgreSQLの接続を終了
conn.close()
print("PythonからPostgreSQLのデータを削除しました。")
上記のプログラムを「postgresql-data-delete-test.py」というファイル名で保存しましょう。
その後、以下のコマンドを実行し、PythonからPostgreSQLのデータを削除してください。
# python postgresql-data-delete-test.py
PythonからPostgreSQLのデータを削除しました。
# python postgresql-data-get-test.py
上記のように「データが表示されなかった」場合、「PythonからPostgreSQLのデータを削除できた」と判断できます。
以上が、PythonにおけるPostgreSQLの基本的な使い方です。
【まとめ】PythonからPostgreSQLに接続する手順と基本的な使い方【簡単】
いかがでしたでしょうか?
今回ご紹介した「psycopg2ライブラリ」を使うことで、PythonからPostgreSQLを操作できます。
最後にもう一度内容を確認しましょう。
【おさらい】
・PythonからPostgreSQLを操作する場合、追加でライブラリが必要
・PythonからPostgreSQLに接続したい場合、psycopg2ライブラリを使う
・psycopg2ライブラリを使うと、データ追加、参照、更新、削除が可能
本ブログでは、「PostgreSQLの使い方」や「業務の時短化に繋がるIT技術」を発信しています。定期的に更新していますので、ぜひブックマークをよろしくお願いいたします。
コメント