Flask Academy · レッスン

queryとgetで行を取得する

すべての行、1行、主キーによる行を取得します

レッスン 1/413 ステップ

「queryとgetで行を取得する」はCoddyKit上の無料Flask Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはFlask Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Flask Academyコースには全4レッスンが含まれています。

読み取りはqueryから始まる

データベースからの読み取りはすべて、モデルのquery属性から始まります。これは行をPythonオブジェクトとして取得するための入り口です。🔎

rows = User.query

allですべて取得する

クエリに対してall()を呼び出すと、一致するすべての行を通常のPythonリストとして読み込み、ループで処理できます。

users = User.query.all()
for u in users:
    print(u.name)

firstで1件だけ取得する

1行だけ必要な場合はfirst()を使います。最初に一致した行を返し、テーブルに該当する行がなければNoneを返します。

user = User.query.first()

primary keyで取得する

IDがわかっている場合は、get()が最も速い方法です。primary keyを渡すと、その行を正確に返します。

user = User.query.get(7)

見つからない場合、getはNoneを返す

そのIDの行がない場合、get()は例外を発生させずにNoneを返します。結果を使う前に必ず確認してください。

user = User.query.get(999)
if user is None:
    print("not found")

簡単に404を返す

ビューでget_or_404()を使うと、IDで取得し、行がなければ自動的に中断して404ページを表示します。手動で確認する必要はありません。

user = User.query.get_or_404(7)

絞り込みにはfirst_or_404を使う

first_or_404()をfilterと組み合わせると、1件取得し、条件に一致するものがなければ適切な404を返せます。

u = User.query.filter_by(email=e).first_or_404()

行を読み込まずに件数を数える

データではなく件数だけが必要ですか。count()ならデータベースに直接件数を問い合わせるため、すべての行をメモリに読み込まずに済みます。

total = User.query.count()

クエリは遅延実行される

クエリを組み立てただけでは、まだデータベースにアクセスしません。SQLが実行されるのは、all、first、getなどのメソッドを呼び出したときです。

q = User.query
results = q.all()

各行はオブジェクトです

結果は実際のmodel instancesとして返されるため、user.nameやuser.emailのように通常の属性としてカラムを読み取れます。

user = User.query.first()
print(user.email)

適切な取得方法を選ぶ

IDがわかっている場合はget、複数の候補から1件取得する場合はfirst、全件取得する場合はallを使います。適切に選ぶと読み取り処理が明確で高速になります。

クイックチェック

レコードのprimary keyがわかっています。最も直接的に取得できる呼び出しはどれですか。

まとめ:行の取得

これでqueryを使ってデータを読み取れるようになりました。リストにはall、1件にはfirst、ID指定にはget、ビューでの処理にはor_404ヘルパーを使います。よくできました。🎉

無料で開始

AI チューターと学ぶ Python — 無料

ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。

コース
30
レッスン
120

よくある質問

「queryとgetで行を取得する」レッスンは無料ですか?

はい。「queryとgetで行を取得する」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Flask Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Flask Academyコースには全4レッスンが含まれています。

「queryとgetで行を取得する」で何を学びますか?

すべての行、1行、主キーによる行を取得します ブラウザで直接実行するハンズオンコードでFlask Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Flask Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのFlask Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「queryとgetで行を取得する」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このFlask Academyレッスンでコードを書いて実行できますか?

はい。すべてのFlask Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. queryとgetで行を取得する
  2. 結果をフィルター、並べ替え、制限する
  3. リレーションシップと外部キーを定義する
  4. JOINと遅延読み込み・即時読み込み
← Flask Academyに戻る