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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Ryusei Ohkura
October 21, 2025
Technology
3
980
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
習慣化するための技術 / Techniques for Habit Formation
3l4l5
1
180
Type Spec と Go(gin) で作るTypeSafeな web api/Craete type safe web api with typespec and go
3l4l5
0
290
NEW GAMEが良いということを伝えたいLT / New Game is iizo.
3l4l5
0
71
「アニメから学ぶ」から学ぶ具体と抽象/ I wanna learn abstraction from "learning from anime"
3l4l5
3
910
アニメからリーダーシップを学びたい / i wanna learn leader ship from animation
3l4l5
1
100
ドミネーターの実装で学ぶSOLID原則/learn solid law with dominator
3l4l5
1
140
学園アイドルマスターでコミュニケーションを学ぼう!/learn communication with gakuen idol master
3l4l5
1
270
プラクティスの名前は言わない方がいい / Not to mention the name of the practice
3l4l5
8
4.5k
目標を立て、 宇宙よりも遠い場所へ!/a place further than the universe with the goal
3l4l5
4
670
Other Decks in Technology
See All in Technology
M&A 後の統合をどう進めるか ─ ナレッジワーク × Poetics が実践した組織とシステムの融合
kworkdev
PRO
1
420
Bill One 開発エンジニア 紹介資料
sansan33
PRO
4
17k
Deno・Bunの標準機能やElysiaJSを使ったWebSocketサーバー実装 / ラーメン屋を貸し切ってLT会! IoTLT 2026新年会
you
PRO
0
300
Bedrock PolicyでAmazon Bedrock Guardrails利用を強制してみた
yuu551
0
180
データの整合性を保ちたいだけなんだ
shoheimitani
8
3k
仕様書駆動AI開発の実践: Issue→Skill→PRテンプレで 再現性を作る
knishioka
2
610
プロポーザルに込める段取り八分
shoheimitani
1
180
Claude_CodeでSEOを最適化する_AI_Ops_Community_Vol.2__マーケティングx_AIはここまで進化した.pdf
riku_423
2
500
Cosmos World Foundation Model Platform for Physical AI
takmin
0
520
ZOZOにおけるAI活用の現在 ~開発組織全体での取り組みと試行錯誤~
zozotech
PRO
5
4.9k
顧客との商談議事録をみんなで読んで顧客解像度を上げよう
shibayu36
0
190
予期せぬコストの急増を障害のように扱う――「コスト版ポストモーテム」の導入とその後の改善
muziyoshiz
1
1.7k
Featured
See All Featured
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
72
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
0
140
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
48
Between Models and Reality
mayunak
1
180
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
55
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
54
Utilizing Notion as your number one productivity tool
mfonobong
3
220
Un-Boring Meetings
codingconduct
0
200
Designing for Performance
lara
610
70k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
270
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.2k
GraphQLの誤解/rethinking-graphql
sonatard
74
11k
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
ありがとうございました!