LoginSignup
1
2

More than 3 years have passed since last update.

SQLAlchemyのJSON型が更新できない場合の対処方法

Posted at

はじめに

JSON型に入れれそうなデータがあって、あまりみんな使ったことないということでJSON型を導入しました。
SQLAlchemyからデータを入れるプログラムを書いていてinsert出来たものの、update出来なかったので対処方法について書きます。

環境

Mysql 5.7
Python 3.8.1
SQLAlchemy 1.3.12

多分、Postgresqlでも同様の対処でいけると思います。

テーブル構成

なんでも良いので、テーブルにJSON型作ればOKです。
JSONの中身は任意で問題ありません。

insert

insertは特に問題になりませんでした。
入れたいdictを作って、カラムに設定すればOKでした。
配列でも特に問題ありません。

update

問題はこちらで、中身を書き換えたいという時に普通に中身を書き換えても反映してくれませんでした。
反映方法としてはflag_modifiedで明示的にカラムが変更されたことを通知してからaddだったりで反映するとなります。

from sqlalchemy.orm.attributes import flag_modified

flag_modified(entity, "json")

終わりに

なんで、このような手順になっているかは知りません

1
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2