Python3 bpmappingでHTMLパラメータとjsonデータ間のマッピング 1
しばらくはpythonモジュールのお勉強。
[amazonjs asin="B00XZTYMG6″ locale="JP" title="Pythonプロフェッショナルプログラミング 第2版"]
Bottleのようなシンプルなフレームワークでパラメータを渡す際に、マッピングがごちゃごちゃしてしまい、
うまくパラメータが拾えなくなってしまうことがある。
そんな時に、bpmappersモジュールが便利。
前提
ここの前提に基づいて以降の説明をしていく。
[shell]
$ pyvenv ~/bpmappers_python
$ source ~/bpmappers_python/bin/activate
(bpmappers_python)$ pip install –upgrade pip
(bpmappers_python)$ pip install bpmappers
(bpmappers_python)$ pip install ipython
[/shell]
マッピング
bpmapper.pyを作成して、以下を記述する。
[python]
# -*- 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("")
[/python]
[shell]
(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"
}
[/shell]
ディスカッション
コメント一覧
まだ、コメントがありません