はじめに
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")
終わりに
なんで、このような手順になっているかは知りません