[Python] Excelを利用してPythonでSQLクエリを生成する

内容

Pythonの勉強がてらにツールを作ってみた。
Excelに入力した内容をもとにテキストにSQLクエリを生成する処理。
大量のテストデータを用意したい時などに。
f:id:WaterFalls:20210311092359j:plain プログラム一式、exeは以下に。

github.com

概要

以下をExcel(用意したテンプレートファイル)で入力する。

base SQL

INSERT INTO user_tbl(id, name, birth) VALUES ({0}, '{1}', '{2}');

input data

f:id:WaterFalls:20210303163020j:plain

出力

Pythonで作成したexe(またはpy)を実行するとテキストファイルで以下を出力する。

INSERT INTO user_tbl(id, name, birth) VALUES (1, 'Michael', '1993-04-15');
INSERT INTO user_tbl(id, name, birth) VALUES (2, 'David', '1950-11-03');
INSERT INTO user_tbl(id, name, birth) VALUES (3, 'sato', '1999-12-31');
INSERT INTO user_tbl(id, name, birth) VALUES (4, 'ivy', '2002-07-07');
INSERT INTO user_tbl(id, name, birth) VALUES (5, '米田', '2010-09-10');
INSERT INTO user_tbl(id, name, birth) VALUES (6, 'キャメロン', '1989-01-03');
INSERT INTO user_tbl(id, name, birth) VALUES (7, 'yamada', '1952-08-16');



[bat] BATファイルの基本テンプレート(お作法)

内容

毎回忘れるのでバッチファイルを作成する際の雛型を備忘録として。
Pythonのpyファイルを実行するサンプルもあわせて。(事前にpython.exeにPATHを通す必要あり)

@echo off
rem 環境変数を汚さないようにローカル化
setlocal

rem pushdの方がネットワークドライブの共有フォルダへの移動もできより便利
rem バッチ実行フォルダをカレントディレクトリにする
rem cd /d %~dp0
pushd "%~dp0"

rem ここに処理
rem バッチと同階層にあるpyファイルの場合は以下
python test.py


rem pushdを使った場合はここで元のフォルダに戻る
popd

pause
exit

[書籍] [Python] 独学プログラマー Python言語の基本から仕事のやり方まで

対象書籍

書籍:独学プログラマー Python言語の基本から仕事のやり方まで

読んで、写経した。

目的

Python未経験のため手っ取り早く基本を学びたかった。

感想

結論から。別言語でも業務経験があればPythonの導入書としては不向き。
以下、箇条書き。

  • 環境構築手順などの記載はないのでPythonのインストールやIDE選定などは自身で行う必要あり。
  • 序盤はIF文などプログラミングの初歩の初歩の記載になっている。
  • Gitの使い方などPython以外の部分にも大きくページを割いている。
  • 後半は業界未経験者に対して?働く上での心構えを記載している。
  • ぶっちゃけPythonについての記載は大したことない。
  • Pythonを学びたいというニーズは満たせない。
  • 価格が2200円と技術書にしては安いのではじめの一歩をアクションさせるためならいいのでは笑

[メモ][Python] 環境構築メモ:Windows 10 + Python 3.8 + Anaconda + VS Code

環境構築メモ

こちらを参考にさせてもらった。

Python環境構築(Anaconda + VSCode) @ Windows10 【2020年1月版】 - Qiita

Windows + Anaconda3 + Visual Studio Code でPython開発環境 - Qiita

[書籍] [Java] テスト駆動開発 写経してみた

概要

テスト駆動開発

テスト駆動開発

書籍「テスト駆動開発」の第1部を読んで、写経してみたのでその感想。 写経コードはこちら。

github.com

感想

まだ第1部「他国通貨」しか読んでいないが写経だけでも

コード→テストコード→リファクタリング→コード→テストコード→リファクタリング→・・・

のサイクルが掴める。
同じような実装を

コード→リファクタリング→テストコード

で行った場合と最終的に作成したテストコードにどのような違いがあるのかは気になるところ。
しかし、後者の場合だと悪意的に、意図的にテストコードが書かれないケースが発生するし、
(テストコードが書かれていない状態が発生している時点で恩恵が得られなくなる)
プロジェクトが追い詰められると

コード→テストコード

からの

コード

になっていくのが容易に想像できる笑

プロジェクトのルールとしてテストコードを確実に書いていくと設定した場合に
その根拠付けとしてこの書籍の名を借りるのもアリかな。

最後に

この書籍の訳者である和田卓人さんのFizzBuzz問題を使用したTDD開発のライブコーディングが めちゃくちゃわかりやすくておすすめ。
(本書籍読後の方が頭に入りやすい気がする) channel9.msdn.com

[書籍] 購入予定

購入予定の書籍

実践ドメイン駆動設計 (Object Oriented SELECTION) (日本語)

実践ドメイン駆動設計 (Object Oriented SELECTION)

実践ドメイン駆動設計 (Object Oriented SELECTION)



Javaによる関数型プログラミングJava 8ラムダ式とStream

Javaによる関数型プログラミング ―Java 8ラムダ式とStream

Javaによる関数型プログラミング ―Java 8ラムダ式とStream

  • 作者:Venkat Subramaniam
  • 発売日: 2014/10/24
  • メディア: 単行本(ソフトカバー)
(追記)購入したので感想を記載した。

[書籍] [Java] Javaによる関数プログラミング ~ Java 8ラムダ式とStream - 1分技術ブログ



独学プログラマー Python言語の基本から仕事のやり方まで (日本語)

(追記)購入したので感想を記載した。

[書籍] [Python] 独学プログラマー Python言語の基本から仕事のやり方まで - 1分技術ブログ



退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング

英語だけど無料で読める公式サイトもあるので
まずは以下のサイトを眺めてみる。

Automate the Boring Stuff with Python

(追記)サイトで学習+写経してみた。
実書籍を読んでいないので正確なことは言えないがサイトで十分でした。

もし購入を考えているなら第2版が出版される予定なのでそれを待った方がいいかも。

[PHP][Laravel][SQL] LaravelのEloquentでFROM句の副問い合わせ

バージョン

Laravel 6.0

概要

Eloquentで以下を表現する。

SELECT tbl.a, tbl.b FROM (SELECT a,b FROM hoge) as tbl

実現したいSQL

SELECT
    user_id, sum(salary) as sum_salary
FROM (
    SELECT
        user_id, salary 
    FROM
        users
    WHERE
        user_type = 1
        ) AS target_user
WHERE
    target_user.salary > 300000
GROUP BY
    target_user.user_id

Models/user.php

$subquery = self::select(['user_id', 'salary'])
    ->where('user_type', '=', ':usertype')
    ->toSql();

return DB::table(DB::raw('('.$subquery.') AS target_user'))
    ->selectRaw('user_id, sum(salary) as sum_salary')
    ->setBindings([':usertype' => $user_type_val])
    ->where('target_user.salary', '>', 300000)
    ->groupBy('target_user.user_id')
    ->get()
    ->toArray();



PHPフレームワーク Laravel入門 第2版

PHPフレームワーク Laravel入門 第2版