パイソンでgimeiでSQLite3のテストデータを用意してみる

データベースを学んだり、実際の開発で面倒な事の一つにテストデータを調達することがあります。

今回はgimeiというライブラリを活用して、テストデータを作成してみます。

gimei · PyPI


gimeiはpipx経由で実行することにしますので、当記事を読み進める前にpipxのインストールを行ってください。

MicroでPythonのコードフォーマッターを使えるようにする


pipx経由で実行する場合は、gimeiのインストールは不要になりますので、コードの作成に移ります。




今回のテストデータは

CREATE TABLE users (
	id INTEGER PRIMARY KEY AUTOINCREMENT,
	name VARCHAR,
	money INTEGER
);

のテーブルの定義を行っているsample.sqlite3に挿入することにします。

※ sample.sqlite3のパスが/path/to/dir/sample.sqlite3で話を進めます。

# sample.sqlite3があるディレクトリまで移動
$ cd /path/to/dir
$ micro sql.py
import sqlite3
from gimei import Gimei
import random

# Python3からSQLite3のデータベースに接続
conn = sqlite3.connect("sample.sqlite3")

# SQLite3のデータベースを操作する為のカーソルを作成
cur = conn.cursor()

for i in range(1000):
␣␣␣␣# ランダムな名前の生成
␣␣␣␣name = Gimei().name
␣␣␣␣first_name = name.first.kanji
␣␣␣␣money = random.randint(10, 10000)

␣␣␣␣# データの取得
␣␣␣␣cur.execute('INSERT INTO users (name, money) VALUES (?, ?)', (first_name, money))

# 下記コードでコミットという処理を行うことでデータがインサートされる
conn.commit()

# 接続を閉じる
conn.close()

※␣は半角スペース1個分


コードを保存してファイルを閉じ、下記のコマンドを実行してデータベースにテストデータを挿入します。

$ pipx run --spec gimei python3 sql.py
  python3 is already on your PATH and installed at /usr/bin/python3.
    Downloading and running anyway.

のような出力はありますが、コードは実行されテストデータが挿入されます。


ターミナルからSQLite3を起動しデータベースファイルを直接読み込んで、パイソンから挿入したデータがあるか確認してみましょう。




$ pipx run --spec gimei python3 sql.py

を毎回実行するのは大変なので、シェルスクリプトで関数にしておきます。

シェルスクリプトの関数の仕組みを利用して新しいコマンドを追加する


~/.bashrc or ~/.zshrc

gimei() {
	if [ -z "$1" ]; then
		echo "使用法: gimei <ファイル名.py>"
		return 1
	fi
	pipx run --spec gimei python3 "$1"
}

$ gimei ファイル名

でテストデータの自動作成が出来るようになりました。


if [ -z "$1" ]; then

の -z はファイル名の指定が無い場合に真(true)になるということで、ファイル名の指定がなければ使い方を出力するようにしています。

シェルスクリプトのif文

京都の東本願寺で開催されているプログラミング教室で講師をしています。
詳しくはTera schoolを御覧ください。
マインクラフト用ビジュアルエディタを開発しています。

詳しくはinunosinsi/mcws_blockly - githubをご覧ください。