Django QuerySet "ARE" Patterns
by
HayaoSuzuki
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
明日から使うな! Django QuerySet アレパターン Hayao Suzuki @CardinalXaro
Slide 2
Slide 2 text
おまえ誰よ ● Hayao Suzuki @CardinalXaro ● 株式会社アイリッジ ○ Pythonエンジニア ○ テックリード(自称) ● オライリージャパンの回し者 ○ テクニカルレビュワー(自称)
Slide 3
Slide 3 text
今日のテーマ ● Django QuerySetでやらかした思い出を語る。 ● 本日、スマートフォンで作ったスライドなので手抜きです。 ● この発表はフィクションであり、営業さんが客先で軟禁されたとか エンジニアが土日待機したなどの事実はありません。
Slide 4
Slide 4 text
indexを張らずにDBがスパイクした ● token = models.TextField(max_length=200) ● token = models.CharField(max_length=200, db_index=True)
Slide 5
Slide 5 text
年月日で調べたい 'regist_dt__year': today.year, 'regist_dt__month': today.month, 'regist_dt__day': today.day
Slide 6
Slide 6 text
なんだこれは、たまげたなあ WHERE (EXTRACT(DAY FROM `regist_dt`) = 28 AND EXTRACT(MONTH FROM `regist_dt`) = 1 AND `regist_dt` BETWEEN '2019-01-01 00:00:00' AND '2019-12-31 23:59:59.999999'
Slide 7
Slide 7 text
こうした 'regist_dt__gte': datetime.datetime.combine(datetime.date.today(), datetime.time.min), 'regist_dt__lte': datetime.datetime.combine(datetime.date.today(), datetime.time.max),
Slide 8
Slide 8 text
そうそうこれだよ WHERE (`regist_dt` >= 2019-01-28 00:00:00 AND `regist_dt` <= 2019-01-28 23:59:59.999999
Slide 9
Slide 9 text
結論 ● 実行計画調べよう ● SQL見よう ● LT資料は事前に準備しよう