読者です 読者をやめる 読者になる 読者になる

ほんじゃら堂

めんどくさい仕事をラクにする作業自動化レシピ集

PostgreSQLにサクッとテストデータを登録するPythonテンプレ

IT系・技術系 python

Python手軽でいいね、ってことで

最近はJavascriptよりもPythonでスクリプトを書いている。

今日もパフォーマンステスト用に大量データを登録する必要があったので

SQLAlchemyを使ってスクリプトを書いてみた。

Python3で動作確認済み。

create_test_datas.py

# -*- coding: utf-8 -*-

import sqlalchemy

engine = sqlalchemy.create_engine("postgresql+psycopg2://<DBユーザー名>:<DBパスワード>@/<DB名>", client_encoding="utf8")

def create_table_defs(conn, meta):
    """テーブル定義"""
    tables = { 
        "items": sqlalchemy.Table("t_item", 
            meta, 
            autoload=True, 
            autoload_with=conn, 
            postgresql_ignore_search_path=True)
    }   

    return tables

def create_test_items(item_table):
    """テストデータ登録"""
    for i in range(1, 20000):
        item = {
            "item_cd": "S%08d" % i,
            "item_name1": "テスト商品%d" % i,
            "unit": "個"
        }
        item_table.insert().execute(**item)

with engine.connect() as conn:
    conn.execute("SET search_path TO public")
    meta = sqlalchemy.MetaData()
    meta.bind = engine
    tables = create_table_defs(conn, meta)
    create_test_items(tables["items"])

商品マスタ(t_item)に商品データを20,000件登録する。

DB接続情報とテーブル名とカラムリストと件数を書き換えれば色々なテーブルに

データを登録できるので、テンプレとして使い回せそう。

使用しているライブラリは「sqlalchemy」と「psycopg2」。

どちらもpipでインストール可能。

これまでSQLAlchemyは使ったことなかったけど、楽に書けてなかなか良い。

SQLAlchemy - The Database Toolkit for Python

入門 Python 3

入門 Python 3