Python3 bpmappingでHTMLパラメータとjsonデータ間のマッピング 1

Share on Facebook
Pocket
LINEで送る
Bookmark this on Google Bookmarks

しばらくはpythonモジュールのお勉強。

Bottleのようなシンプルなフレームワークでパラメータを渡す際に、マッピングがごちゃごちゃしてしまい、
うまくパラメータが拾えなくなってしまうことがある。
そんな時に、bpmappersモジュールが便利。

前提

ここの前提に基づいて以降の説明をしていく。

$ pyvenv ~/bpmappers_python
$ source ~/bpmappers_python/bin/activate
(bpmappers_python)$ pip install --upgrade pip
(bpmappers_python)$ pip install bpmappers
(bpmappers_python)$ pip install ipython

 

マッピング

bpmapper.pyを作成して、以下を記述する。

# -*- coding: utf-8 -*-

from bpmappers import Mapper, RawField
import json


class User(object):
    """ユーザー情報"""

    def __init__(self, 
                 user_id,
                 user_name,
                 user_password,
                 user_sex,
                 user_age):

        self.id = user_id
        self.name = user_name
        self.password = user_password
        self.sex = user_sex
        self.age = user_age

class Comment(object):
    """コメント情報"""
    def __init__(self, id, user_id, comment):

        self.comment_id = id
        self.user = user_id
        self.comment_text = comment

def get_user(user_id):

    user = User(user_id=user_id, 
                user_name="umentu",
                user_password="umentu_password",
                user_sex="Man",
                user_age=100)
    return user

class UserMapping(Mapper):
    """ユーザー情報とjsonデータをマッピング"""
    user_id = RawField("id")
    user_name = RawField("name")
    user_password = RawField("password")


class UserInfoMapping(UserMapping):
    """ユーザーの詳細情報とjsonデータをマッピング"""
    user_sex = RawField("sex")
    user_age = RawField("age")


if __name__ == '__main__':

    """
    get_userで定義されている値が
    """
    user = get_user(20)
    
    print("""---ユーザー情報をマッピングしたデータ---""")
    user_dict = UserMapping(user).as_dict()
    print(json.dumps(user_dict, indent=2))
    print("")

    print("""---ユーザーの詳細情報をマッピングしたデータ---""")
    user_info_dict = UserInfoMapping(user).as_dict()
    print(json.dumps(user_info_dict, indent=2))
    print("")

(bpmappers_python) $ python bpmapper.py
---ユーザー情報をマッピングしたデータ---
{
  "user_id": 20,
  "user_password": "umentu_password",
  "user_name": "umentu"
}

---ユーザーの詳細情報をマッピングしたデータ---
{
  "user_name": "umentu",
  "user_password": "umentu_password",
  "user_id": 20,
  "user_age": 100,
  "user_sex": "Man"
}

Follow me!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です