攻略!SQLAlchemy🔥 第一話

1 min read読了の目安(約1600字)

はじめに

Python の代表的 ORM といえば SQLAlchemy ですよね多分。自分が ORM に慣れていないこともあってか、よくハマってしまう今日この頃です。公式ドキュメントもちょっと読みづらかったりして、複雑なことやろうとするとどこ見たら良いんだってなります。というわけで、一回腰を据えて再入門していく様を備考禄として残します。

すすめかた

公式サイトをだらだらと読み進めて(動作検証交えながら)いこうと思います。とりあえず、チュートリアルをやっていきます。チュートリアルは6部構成になっているので、チュートリアルだけで6話に分けますよ!それでは、れっつごー!

まずはインストール

自分の環境には既に入ってますが、一応インストールから始めましょう!

pip install SQLAlchemy

バージョン確認いたします!

IPython
In [1]: import sqlalchemy
In [2]: sqlalchemy.__version__
Out[2]: '1.4.14'

コネクションの確立 - the Engine

https://docs.sqlalchemy.org/en/14/tutorial/engine.html
SQLAlchemy を始めるには Engine と呼ばれるオブジェクトからスタートします。Engine はデータベースとの接続の中心的役割を担い、またコネクション・プールの管理も行います。Engine はあるデータベースサーバに対して1つのグローバルオブジェクトとするのが基本だそうなので、モジュールのトップレベルで保持するのがいいのかな?まあ、早速生成してみましょう。create_engineで Engine を生成することができます。データベースの URL 文字列を渡してやる必要があります。
IPython
In [3]: from sqlalchemy import create_engine
In [4]: engine = create_engine("sqlite+pysqlite:///:memory:", echo=True, future=True)

インメモリの sqlite だとちょいクセな感じはしますね。最初スラッシュ 3 つってどういうことなんだろうと思いましたが、{DATABASE}://{USER}:{PASSWORD}@{HOST}:{PORT}/{DB_NAME}でいうと USER から PORT まですっ飛ばしているだけです。インメモリだといろいろ確認しづらいときは:memory:の部分をpath/to/db.sqliteみたいにファイルパスを指定すればファイル出力されます。

postgres とか用意するのも面倒なので、基本的には sqlite でチュートリアルを進めていこうと思います。ちなみにechoを True にすると SQLAlchemy で実行される SQL クエリが標準出力にでてきます。ORM してるときに裏で何が起こっているのか確認できるので、実験中は常時 True でいきます。あと、これは迷いましたがfutureも True でいきます。実は SQLAlchemy はバージョン 2 系が既にリリースされていて、1.4 系にくっついてきます。ここでfutureを True にしてやると、内部的には 2 系のもので動作するようです。まだ世の中は 1 系が広く使われていると思いますが、自分は特にしがらみがないので 2 系で勉強していきますよ~。

おわり

第1部はこれだけなので一旦切ります。次はこちら~。