2021-10-16に投稿

クラスオブジェクトのシリアル化

PythonでクラスオブジェクトをJsonに出力できると知ったので、メモ。

シリアル化、という手段で、通常はメモリに保持されるクラスオブジェクトを、バイナリ変換してファイル出力できるようにできるとのこと。
利点としては、プログラムが終わった後にクリアされてしまうクラスオブジェクトの情報を、ファイルやDBなどに保存しておくことができ、再作成の必要がなくなるという点。

復元する、他のプログラムと共有する、DBに保存しておいて呼び出す。
色々使い道がありそう。

Python でクラスオブジェクトをJSON形式にする・戻す

クラス内部で複数の変数を定義しておいて、クラスオブジェクトを生成して値を格納して、それをjsonでダンプしておけば、ある程度の長さならDBのString型カラム1つに保存することができて、後は必要に応じて呼び出して復元するっていうのもできるのか。
カラムに分けて格納してselectしてそれぞれ成形して…ってやるよりも楽かな。

クラスオブジェクトを保存する必要が無ければ、シリアル化は不要、ということになるのかな?
プログラム実行後に復元や、2回目以降に再利用する必要がなければ不要か。

例えば、データに対する処理が前回実行結果の一部を更新していくような場合、とか?
DBに格納した前回実行結果を取得して、CSVファイルから今回変更分を読み込んで、反映してデータを最新化して、DB登録、という流れの場合は採用できるかな。

1.DBに格納した前回実行結果を取得:selectの実行
 →dumpしたクラスオブジェクトをDBに保存していた場合、同様にselectを実行
  ただ、jsonにダンプしていた場合は、デシリアライズすることでクラスインスタンスが復元される
  DBからカラムでデータを取得した場合はクラスオブジェクトを生成して設定するところから始める

2.CSVファイルから今回変更分を読み込む
 →処理内容に違いはない

3.反映してデータを最新化
 →処理内容に違いはない

4.DB登録:insert(update)の実行
 →カラムに分けたデータか、クラスオブジェクトかの違い

この例だと大きな差は1くらい?
こういう時に有利!っていう状況ないかな。

ツイッターでシェア
みんなに共有、忘れないようにメモ

ao-iro

Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

有料記事を販売できるようになりました!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?

コメント