さて、本日は Python を使った PostgreSQL の操作について紹介しようと思います。
関連記事
Python で SQL Server、SQLite を操作する方法についても書いていますので、興味のある方はぜひ読んでみてください。
使用するライブラリ
psycopg2 というライブラリを使用します。
実行環境
Windows10 64bit
Python 3.6.6
PostgreSQL 12.4
使用するデータ
以下のようなテーブルを用意しました。
データは以下のようなものを用意しました。
今回試すこと
psycopg2 を使用して以下を実行してみます
ログイン
検索
更新
挿入
削除
ログイン
接続文字列を作成して psycopg2.connect を実行すればログインができます。
# -*- coding: utf-8 -*- import psycopg2 def connect(): con = psycopg2.connect("host=" + "localhost" + " port=" + "5432" + " dbname=" + "DB名" + " user=" + "ユーザー" + " password=" + "パスワード") return con if __name__ == '__main__': con = connect()
検索
テーブルを検索してカラムの値を print します。
def select_execute(con, sql): with con.cursor() as cur: cur.execute(sql) rows = cur.fetchall() return rows if __name__ == '__main__': con = connect() sql = 'select * from test' res = select_execute(con, sql) for r in res: print(r[0]) print(r[1])
このような結果になりました。
更新
name カラムの中身を「A」から「B」となるようにデータを更新します。
def updatet_execute(con, slq): with con.cursor() as cur: cur.execute(sql) con.commit() if __name__ == '__main__': con = connect() sql = """update test set name = 'B'""" # データ更新 updatet_execute(con, sql)
想定通りの結果になりました。
挿入
1レコード挿入する処理を書いています。
def insert_execute(con, slq): with con.cursor() as cur: cur.execute(sql, (2,'Z')) con.commit() if __name__ == '__main__': con = connect() sql = """insert into test(id, name) values(%s, %s)""" # データ登録 insert_execute(con, sql)
ちゃんと挿入した分のレコードが DB 側に反映されていました。
削除
上記処理で挿入したレコードを削除しています。
def delete_execute(con, slq): with con.cursor() as cur: cur.execute(sql) con.commit() if __name__ == '__main__': con = connect() sql = """delete from test where id = 2""" # データ削除 delete_execute(con, sql)
想定通りレコードが削除されました。
まとめ
psycopg2 を使った一通りの処理を紹介したのですが、簡単に Python で PostgreSQL を操作できることがわかるかと思います。システム開発にDB はつきものなので、今後も色々 DB の扱いについて書いてみようと思います。本日は以上です。