2021年7月14日水曜日

SQLAlchemy で json_set を使う方法

SQLAlchemy で json_set を使う方法

概要

特定のキーだけ更新したい場合に使えます 使用するテーブルは前回の User テーブルを使います

環境

  • macOS 11.4
  • Python 3.8.3
  • MySQL 8.0.25
  • SQLAlchemy 1.3.19

サンプルコード

user_query = User.query.filter(User.id == id)
for key, value in profile.items():
    user_query.update(
        {"profile": db.func.json_set(
            User.profile,
            "$." + key,
            value)
        }, synchronize_session='fetch'
    )
    db.session.commit()

User テーブルの profile カラムが JSON 型です その中にある key を value で更新します json_set を使うと既存のキーはそのままで指定したキーだけ更新します

update を使ってそのまま dict を指定すると上書き更新になるのでキーが消えてしまったりします

参考サイト

0 件のコメント:

コメントを投稿