SQLAlchemy の select(User).where(User.id =="123") を理解してみる/sqlalchemy deep dive
by
Ryusei Ohkura
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
SQLAlchemy の select(User).where(User.id =="123") を理解してみる👀 ヲクラ
Slide 2
Slide 2 text
select(User).where(User.id =="123")
Slide 3
Slide 3 text
select(User).where(User.id =="123") SELECT * FROM `User` WHERE id = '123'
Slide 4
Slide 4 text
SELECT * FROM `User` WHERE id = '123' select(User).where( User.id =="123" )
Slide 5
Slide 5 text
select(User).where( User.id =="123" ) True/False 🤔 ⚠これは誤った解釈です
Slide 6
Slide 6 text
select(User).where( True) User.idの情報が 消えてない?? ⚠これは誤った解釈です
Slide 7
Slide 7 text
自己紹介 3l4i5 3l4l5 - クロスマート株式会社 - 請求書チーム - テックリード - バックエンドエンジニア - 趣味 - ⛰登山 - 📚マンガ 往蔵隆成(ヲクラ)
Slide 8
Slide 8 text
No content
Slide 9
Slide 9 text
バックエンド フロントエンド その他 CI/CD データベース 使用技術(抜粋)
Slide 10
Slide 10 text
本題
Slide 11
Slide 11 text
今日の目標 select(User).where(User.id =="123") SELECT * FROM `User` WHERE id = '123' の変換で何が起きてるのか知ろう
Slide 12
Slide 12 text
● Python製のORM ● SQLの全機能をPythonを用いて 表現することができる SQLAlchemyとは?
Slide 13
Slide 13 text
Pythonの演算子オーバーロード
Slide 14
Slide 14 text
● +, /, - などの基本的な演算子を 自分で定義した処理で上書きするこ とができる機能 ● 右の例では、valueというフィールド を持つSampleクラス同士の足し算を 上書きしている Pythonの演算子オーバーロード
Slide 15
Slide 15 text
Pythonの演算子オーバーロード ● タネは、__add__ メソッドに処理を 書くことで、"+"の振る舞いを独自に 定義することができる ● __sub__ なら "-" ● __eq__ なら "=="
Slide 16
Slide 16 text
Pythonの演算子オーバーロード ● タネは、__add__ メソッドに処理を 書くことで、"+"の振る舞いを独自に 定義することができる ● __sub__ なら "-" ● __eq__ なら "=="
Slide 17
Slide 17 text
User.id =="123" User.idのclassの__eq__を上書きして "id = 123"に変換する処理をかけばいい! 😮
Slide 18
Slide 18 text
No content
Slide 19
Slide 19 text
__eq__メソッドによって "=="の処理を上書き
Slide 20
Slide 20 text
__eq__メソッドによって "=="の処理を上書き "==" の演算からWHERE句の 構成部分を返却
Slide 21
Slide 21 text
結論!
Slide 22
Slide 22 text
select(User).where( User.id =="123" ) True/False 🤔 ⚠これは誤った解釈です
Slide 23
Slide 23 text
select(User).where( User.id =="123" ) True/False 🤔
Slide 24
Slide 24 text
"id = '123'" を意味するものに変換される select(User).where( User.id =="123" )
Slide 25
Slide 25 text
「あ、これもか」シリーズ
Slide 26
Slide 26 text
No content
Slide 27
Slide 27 text
「いつ使うの?」シリーズ
Slide 28
Slide 28 text
No content
Slide 29
Slide 29 text
No content
Slide 30
Slide 30 text
No content
Slide 31
Slide 31 text
ありがとうございました!