Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
SQLAlchemy の select(User).where(User.id =="123...
Search
Ryusei Ohkura
October 21, 2025
Technology
1
87
SQLAlchemy の select(User).where(User.id =="123") を理解してみる/sqlalchemy deep dive
『Pythonの多様性 深掘りLT Night 』〜バックエンドから機械学習まで〜
で発表させていただいたものです!
https://findy.connpass.com/event/371749/
Ryusei Ohkura
October 21, 2025
Tweet
Share
More Decks by Ryusei Ohkura
See All by Ryusei Ohkura
NEW GAMEが良いということを伝えたいLT / New Game is iizo.
3l4l5
0
55
「アニメから学ぶ」から学ぶ具体と抽象/ I wanna learn abstraction from "learning from anime"
3l4l5
3
810
アニメからリーダーシップを学びたい / i wanna learn leader ship from animation
3l4l5
1
41
ドミネーターの実装で学ぶSOLID原則/learn solid law with dominator
3l4l5
1
130
学園アイドルマスターでコミュニケーションを学ぼう!/learn communication with gakuen idol master
3l4l5
1
210
プラクティスの名前は言わない方がいい / Not to mention the name of the practice
3l4l5
8
4.3k
目標を立て、 宇宙よりも遠い場所へ!/a place further than the universe with the goal
3l4l5
4
570
個人開発のおいしさと続け方
3l4l5
2
840
IDOLM@STERとSCRUM MASTER / IDOLM@STER and SCRUMMASTER
3l4l5
1
750
Other Decks in Technology
See All in Technology
CoRL 2025 Survey
harukiabe
1
240
[OCI Skill Mapping] AWSユーザーのためのOCI – IaaS編(Compute/Storage/Networking) (2025年10月8日開催)
oracle4engineer
PRO
1
140
ローカルLLMとLINE Botの組み合わせ その2(EVO-X2でgpt-oss-120bを利用) / LINE DC Generative AI Meetup #7
you
PRO
0
130
HR Force における DWH の併用事例 ~ サービス基盤としての BigQuery / 分析基盤としての Snowflake ~@Cross Data Platforms Meetup #2「BigQueryと愉快な仲間たち」
ryo_suzuki
0
250
Sansan Engineering Unit 紹介資料
sansan33
PRO
1
3k
データ戦略部門 紹介資料
sansan33
PRO
1
3.8k
組織改革から開発効率向上まで! - 成功事例から見えたAI活用のポイント - / 20251016 Tetsuharu Kokaki
shift_evolve
PRO
2
220
初めてのDatabricks Apps開発
taka_aki
1
230
だいたい分かった気になる 『SREの知識地図』 / introduction-to-sre-knowledge-map-book
katsuhisa91
PRO
0
570
AI時代、“平均値”ではいられない
uhyo
4
770
ソースを読むプロセスの例
sat
PRO
15
9.6k
映像エッジAIにおけるNode-RED活用事例
emirmatsui
0
110
Featured
See All Featured
Why You Should Never Use an ORM
jnunemaker
PRO
59
9.6k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4k
Building an army of robots
kneath
306
46k
Faster Mobile Websites
deanohume
310
31k
How GitHub (no longer) Works
holman
315
140k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
30
2.9k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.5k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
630
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
15k
Become a Pro
speakerdeck
PRO
29
5.6k
The Language of Interfaces
destraynor
162
25k
Music & Morning Musume
bryan
46
6.9k
Transcript
SQLAlchemy の select(User).where(User.id =="123") を理解してみる👀 ヲクラ
select(User).where(User.id =="123")
select(User).where(User.id =="123") SELECT * FROM `User` WHERE id = '123'
SELECT * FROM `User` WHERE id = '123' select(User).where( User.id
=="123" )
select(User).where( User.id =="123" ) True/False 🤔 ⚠これは誤った解釈です
select(User).where( True) User.idの情報が 消えてない?? ⚠これは誤った解釈です
自己紹介 3l4i5 3l4l5 - クロスマート株式会社 - 請求書チーム - テックリード -
バックエンドエンジニア - 趣味 - ⛰登山 - 📚マンガ 往蔵隆成(ヲクラ)
None
バックエンド フロントエンド その他 CI/CD データベース 使用技術(抜粋)
本題
今日の目標 select(User).where(User.id =="123") SELECT * FROM `User` WHERE id =
'123' の変換で何が起きてるのか知ろう
• Python製のORM • SQLの全機能をPythonを用いて 表現することができる SQLAlchemyとは?
Pythonの演算子オーバーロード
• +, /, - などの基本的な演算子を 自分で定義した処理で上書きするこ とができる機能 • 右の例では、valueというフィールド を持つSampleクラス同士の足し算を
上書きしている Pythonの演算子オーバーロード
Pythonの演算子オーバーロード • タネは、__add__ メソッドに処理を 書くことで、"+"の振る舞いを独自に 定義することができる • __sub__ なら "-"
• __eq__ なら "=="
Pythonの演算子オーバーロード • タネは、__add__ メソッドに処理を 書くことで、"+"の振る舞いを独自に 定義することができる • __sub__ なら "-"
• __eq__ なら "=="
User.id =="123" User.idのclassの__eq__を上書きして "id = 123"に変換する処理をかけばいい! 😮
None
__eq__メソッドによって "=="の処理を上書き
__eq__メソッドによって "=="の処理を上書き "==" の演算からWHERE句の 構成部分を返却
結論!
select(User).where( User.id =="123" ) True/False 🤔 ⚠これは誤った解釈です
select(User).where( User.id =="123" ) True/False 🤔
"id = '123'" を意味するものに変換される select(User).where( User.id =="123" )
「あ、これもか」シリーズ
None
「いつ使うの?」シリーズ
None
None
None
ありがとうございました!