フレームワークを整える
中級SQLAlchemy を整える。
= SQL を書かずに Python のクラスでデータベースを操作する ORM を、裏側の SQL ごと確かめる
サンプルコード(クリックでエディタに挿入)
OUTPUT
Python コードを書いて「実行」を押すと、print と SQL ログがここに出ます。
使い方
4 ステップで ORM の骨格をつかむ。
- 1
モデル定義と作成 — クラスがそのままテーブルになる
class User(Base):と書くと、Base.metadata.create_all(engine)で実際にCREATE TABLEが実行される。 - 2
追加と問い合わせ — Session がやり取りの窓口
session.add()→session.commit()で確定。session.query(User).all()で取り出す。 - 3
リレーション(1対多) — 「持つ」関係をコードで表す
relationship()とForeignKeyで、1人のユーザーが複数の投稿を持つ関係を表現できる。 - 4
echo — 裏側の SQL を覗く
create_engine(..., echo=True)にすると、ORM が実際に発行しているCREATE TABLE/INSERT/SELECTがそのまま出力される。
💡 初回は Pyodide(Python WASM)に加えて SQLAlchemy パッケージの読み込みで数秒〜十数秒かかります。2 回目以降はキャッシュから瞬時にロード。 書いたコードと実行結果は、どこにも送信されません(すべてブラウザ内で実行、DB もブラウザのメモリ上だけ)。
🌐 「実行」を押した最初の1回だけ、Python の実行環境(Pyodide 0.28.0)と SQLAlchemy パッケージを配信元の
cdn.jsdelivr.net から取得します。
これはプログラムを受け取るだけの通信で、あなたが書いたコードや実行結果が送られることはありません。
このツールについて
SQL を直接書かず、Python のクラスとメソッドでデータベースを操作する——それが ORM(object-relational mapping)。裏側でどんな SQL が実行されているかも、echo で覗けます。
SQL を直接書かず Python のクラスでデータベースを操作する ORM の練習場。echo で裏側の生成 SQL も覗ける。DB はブラウザのメモリ上だけ。
主な機能
- 4サンプル(モデル定義/追加と問い合わせ/1対多リレーション/echo)
- echo=True で実際に発行される SQL を表示
- 単一エディタ+出力パネル
- sqlite in-memory・Pyodide 上で実行・送信ゼロ
よくある質問
Q. SQLAlchemy とは何ですか?
A. Python のクラスとメソッドで SQL データベースを操作するための ORM ライブラリです。SQL を直接書かなくてもデータの作成・追加・検索ができます。
Q. echo=True にすると何が起きますか?
A. ORM が裏側で発行している SQL 文(CREATE TABLE・INSERT・SELECT など)がそのままログとして出力されます。
Q. ここで作ったデータベースはどこかに保存されますか?
A. 保存されません。sqlite:///:memory: はブラウザのメモリ上だけの一時的なデータベースで、ページを閉じると消えます。
入力値はURLの「#」以降に入るためサーバーには送信されません。リンクを開くと同じ状態を復元します。