2020年9月14日月曜日

Flask-Marshmallow でデータベースに格納されている配列の文字列データを配列にする方法

概要

データベースに文字列で配列の情報が格納されている場合にレスポンスには文字列ではなく配列として返却したい場合があります
Flask-Marshmallow で文字列から配列にコンバートして返却する方法を紹介します

環境

  • macOS 10.15.5
  • MySQL 8.0.19
  • Python 3.8.3
    • Flask-Migrate 2.5.3
    • Flask-SQLAlchemy 2.5.3
    • Flask-Marshmallow 0.13.0

やり方

ma.Function とラムダ式を使って実現できます
引数にレコードのオブジェクトが入ってくるのでそこから指定のカラムの情報を抜き出して処理します

class UserCustomSchema(ma.Schema):
    my_id = ma.Integer(attribute="id")
    my_name = ma.Function(lambda obj: json.loads(obj.name))

例えばデータベースの name カラムのフィールドには ["hawk","snowlog"] という文字列情報が入っている場合は json.loads を使いましょう
単純に文字列で CSV が入っている場合は .split などを使いましょう

0 件のコメント:

コメントを投稿