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
650
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
50
NEW GAMEが良いということを伝えたいLT / New Game is iizo.
3l4l5
0
60
「アニメから学ぶ」から学ぶ具体と抽象/ I wanna learn abstraction from "learning from anime"
3l4l5
3
830
アニメからリーダーシップを学びたい / i wanna learn leader ship from animation
3l4l5
1
91
ドミネーターの実装で学ぶSOLID原則/learn solid law with dominator
3l4l5
1
130
学園アイドルマスターでコミュニケーションを学ぼう!/learn communication with gakuen idol master
3l4l5
1
240
プラクティスの名前は言わない方がいい / Not to mention the name of the practice
3l4l5
8
4.3k
目標を立て、 宇宙よりも遠い場所へ!/a place further than the universe with the goal
3l4l5
4
610
個人開発のおいしさと続け方
3l4l5
2
860
Other Decks in Technology
See All in Technology
ステートレスなLLMでステートフルなAI agentを作る - YAPC::Fukuoka 2025
gfx
0
140
やり方は一つだけじゃない、正解だけを目指さず寄り道やその先まで自分流に楽しむ趣味プログラミングの探求 2025-11-15 YAPC::Fukuoka
sugyan
1
140
AI-ready"のための"データ基盤 〜 LLMOpsで事業貢献するための基盤づくり
ismk
0
150
Flutter DevToolsで発見! 本番アプリのパフォーマンス問題と改善の実践
goto_tsl
1
320
Sansan BIが実践する AI on BI とセマンティックレイヤー / data_summit_findy
sansan_randd
0
130
エンタープライズ企業における開発効率化のためのコンテキスト設計とその活用
sergicalsix
1
310
バクラクの AI-BPO を支える AI エージェント 〜とそれを支える Bet AI Guild〜
tomoaki25
1
420
こんな時代だからこそ! 想定しておきたいアクセスキー漏洩後のムーブ
takuyay0ne
4
530
これからアウトプットする人たちへ - アウトプットを支える技術 / that support output
soudai
PRO
16
5.1k
クレジットカードの不正を防止する技術
yutadayo
13
6.2k
AWS資格は取ったけどIAMロールを腹落ちできてなかったので、年内に整理してみた
hiro_eng_
0
180
旧から新へ: 大規模ウェブクローラの Perl から Go への移行 / YAPC::Fukuoka 2025
motemen
1
540
Featured
See All Featured
Bash Introduction
62gerente
615
210k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Optimizing for Happiness
mojombo
379
70k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Site-Speed That Sticks
csswizardry
13
960
A Tale of Four Properties
chriscoyier
161
23k
Visualization
eitanlees
150
16k
Building Adaptive Systems
keathley
44
2.8k
Principles of Awesome APIs and How to Build Them.
keavy
127
17k
Making the Leap to Tech Lead
cromwellryan
135
9.6k
Building Flexible Design Systems
yeseniaperezcruz
329
39k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
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
ありがとうございました!