Flask Academy · レッスン

既存レコードを安全に更新する

フィールドを変更し、変更を正しくflushします

レッスン 3/413 ステップ

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

CRUDのU

更新とは既存の行を変更することであり、新しい行を作ることではありません。コツは、まずレコードをloadしてから編集することです。 ✏️

変更前に検索する

操作する前に、必ずidで対象の行を取得してください。get_or_404()は行を読み込むか、見つからなければ適切に404で処理を中断します。

user = User.query.get_or_404(user_id)

Pythonオブジェクトとして編集する

読み込み後は、そのattributesを再代入するだけです。SQLAlchemyが変更を検知し、オブジェクトを変更済みとして自動的にマークします。

user.name = "New Name"

新しい値を読み取る

更新するデータは通常、リクエストボディに含まれています。何かを適用する前にget_json()で解析します。

data = request.get_json()

フィールドを慎重に適用する

クライアントが実際に送信したフィールドだけを上書きします。get()にフォールバック値を指定すると、値を誤ってNoneで消すことを防げます。

user.name = data.get("name", user.name)

変更をCommitする

既存の行にadd()は必要ありません。1回のcommit()で編集内容がデータベースにフラッシュされます。

db.session.commit()

PUTは置き換え、PATCHは部分変更

クライアントがオブジェクト全体を送信する場合はPUTを使い、変更したいフィールドだけを送信する場合はPATCHを使います。

@app.route("/users/<int:id>", methods=["PATCH"])

保存前に検証する

Commitする前に受け取った値を確認します。不正なデータは400で拒否し、壊れたレコードを永続化しないようにします。

if not data.get("name"):
    return jsonify(error="name required"), 400

失敗したらロールバックする

Commitで例外が発生した場合はrollback()を呼び出し、途中まで適用された編集を破棄して、行を元の状態に戻します。

except Exception:
    db.session.rollback()

更新後の行を返す

適切な更新レスポンスでは、ステータス200とともにfreshなレコードを返します。これにより、クライアントは保存された結果を確認できます。

return jsonify({"id": user.id, "name": user.name}), 200

Load、Edit、Commit

更新処理全体は3段階です。行をloadし、属性を変更してからcommitします。新しいオブジェクトが作られることはありません。

クイックチェック

読み込んだオブジェクトの属性を変更しました。編集内容を反映するには何が必要でしょうか。

まとめ:レコードを更新する

get_or_404で読み込み、送信されたフィールドだけを適用して検証し、その後commitします。エラー時にはロールバックします。安全な更新処理ができるようになりました! 🎉

無料で開始

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

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

コース
30
レッスン
120

よくある質問

「既存レコードを安全に更新する」レッスンは無料ですか?

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

「既存レコードを安全に更新する」で何を学びますか?

フィールドを変更し、変更を正しくflushします ブラウザで直接実行するハンズオンコードでFlask Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

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

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

「既存レコードを安全に更新する」レッスンにはどのくらい時間がかかりますか?

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

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

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

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

  1. レコードを作成してセッションをコミットする
  2. 単一取得と複数取得のエンドポイント
  3. 既存レコードを安全に更新する
  4. 削除と存在しない行の処理
← Flask Academyに戻る