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
3
950
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
Type Spec と Go(gin) で作るTypeSafeな web api/Craete type safe web api with typespec and go
3l4l5
0
270
NEW GAMEが良いということを伝えたいLT / New Game is iizo.
3l4l5
0
69
「アニメから学ぶ」から学ぶ具体と抽象/ I wanna learn abstraction from "learning from anime"
3l4l5
3
900
アニメからリーダーシップを学びたい / i wanna learn leader ship from animation
3l4l5
1
99
ドミネーターの実装で学ぶSOLID原則/learn solid law with dominator
3l4l5
1
140
学園アイドルマスターでコミュニケーションを学ぼう!/learn communication with gakuen idol master
3l4l5
1
260
プラクティスの名前は言わない方がいい / Not to mention the name of the practice
3l4l5
8
4.5k
目標を立て、 宇宙よりも遠い場所へ!/a place further than the universe with the goal
3l4l5
4
670
個人開発のおいしさと続け方
3l4l5
2
910
Other Decks in Technology
See All in Technology
習慣とAIと環境 — 技術探求を続ける3つの鍵
azukiazusa1
3
780
AI開発をスケールさせるデータ中心の仕組みづくり
kzykmyzw
0
160
Vivre en Bitcoin : le tutoriel que votre banquier ne veut pas que vous voyiez
rlifchitz
0
360
【Oracle Cloud ウェビナー】ランサムウェアが突く「侵入の隙」とバックアップの「死角」 ~ 過去の教訓に学ぶ — 侵入前提の防御とデータ保護 ~
oracle4engineer
PRO
2
220
GitHub Copilot CLI 現状確認会議
torumakabe
12
4.7k
「AIでできますか?」から「Agentを作ってみました」へ ~「理論上わかる」と「やってみる」の隔たりを埋める方法
applism118
5
4.1k
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
10k
AI Agent Agentic Workflow の可観測性 / Observability of AI Agent Agentic Workflow
yuzujoe
7
2.3k
全員が「作り手」になる。職能の壁を溶かすプロトタイプ開発。
hokuo
1
570
さくらのクラウドでのシークレット管理を考える/tamachi.sre#2
fujiwara3
1
220
【NGK2026S】日本株のシステムトレードに入門してみた
kazuhitotakahashi
0
160
BiDiってなんだ?
tomorrowkey
2
490
Featured
See All Featured
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
100
A designer walks into a library…
pauljervisheath
210
24k
What does AI have to do with Human Rights?
axbom
PRO
0
1.9k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
300
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.3k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
50
BBQ
matthewcrist
89
10k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
0
2.3k
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
0
1.1k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.6k
Build your cross-platform service in a week with App Engine
jlugia
234
18k
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
ありがとうございました!