PythonでExcelデータをPostgreSQLに書込み(DB接続編)

ホリ

Excelデータを手動でデータベースに転記していませんか?

昨今、製造業ではITの活用が進み、様々なシステムやデータベースが事業所毎に増加しています。

更に、これからはそのシステム同士を連携させて生産計画から出荷までを一元管理できるシステムが求められてきます。

そのような取り組みからシステム連携をするために各種マスタが必要になり、データベースへの登録業務などが多く発生してきます。

UIが用意されていれば簡単に登録ができますが、予算の都合上、手動でデータベースへ登録するという選択をすることもあるかと思います。

本記事では下記の内容についてまとめています。

  • PythonでpostgreSQLへ接続して、SQL文を発行する方法

データベースへの書き込みを自動化した背景

データベースへの書き込み作業は、各種マスタを管理しているExcelデータをコピペして行っていました。

この作業にかかる操作としては、10ステップ程あり意外と多くの工数を要していたため、削減が必要でした。

また、直接データベースを触ることになるため、作業ミスなどによるデータの削除や上書きなどが懸念点としてあったため、そのポカヨケとしても自動化をする理由になりました。

PythonでpostgreSQLへ接続して、SQL文を発行する方法

今回は、選択されたExcelのファイルを1クリックでPostgreSQLへ書き込むPythonプログラムの作成になります。

プログラムの作成

pipコマンドでpsycopg2ライブラリをインストールします。

pip install psycopg2

PostgreSQLへ接続をして、SQL文を実行するプログラムを作成していきます。

import psycopg2
from psycopg2.extras import DictCursor

with psycopg2.connect('postgresql://{user}:{password}@{host}:{port}/{dbname}'.format(
    user='postgres', 
    password='hoge', 
    host='localhost', 
    port='5432', 
    dbname='postgres'
    )) as conn:

    query = '''
        SELECT * FROM todo
        '''
    
    with conn.cursor(cursor_factory=DictCursor) as cur:
        cur.execute(query)
        res = cur.fetchall()
    
print(res)

with文を使うことで、connectionやcursorの終了処理を省略できるため、すっきりとしたコードにすることができます。

まとめ

今回は、PostgreSQLからデータを抽出するプログラムを紹介しました。

SQL文を変更することでデータの追加、上書き、削除など様々な操作を行うことができます。

データベースからデータの抽出はよく使うので、この機会に試してみてはいかがでしょうか。