我有一个表是数据库类似于下面的数据。我正在尝试使用Flask Restful创建REST API
我正在使用flask restful和flask sqlalchemy以及下面的api
/project/1
@classmethod
def find_by_project_no(cls,proj_no):
cls.query.filter_by(project_no = proj_no).all()
结果是[<automap.bla.bla>,<>,<>...]
我需要将结果转换为
{
'project': [{
'country': 'USA',
'category': [{
'Beverages': [{
'product': 'Milk',
'count': 2
}, {
'product': 'Juice',
'count': 5
}
]
}, {
'Snacks': [{
'product': 'Potato Chips',
'count': 2
}
]
}, {
'Oils': [{
'product': 'Canola',
'count': 5
}, {
'product': 'Olive',
'count': 8
}
]
}
]
}, {
'country': 'CAN',
'category': [{
'Beverages': [{
'product': 'Milk',
'count': 7
}, {
'product': 'Juice',
'count': 8
}
]
}, {
'Snacks': [{
'product': 'Potato Chips',
'count': 8
}
]
}, {
'Oils': [{
'product': 'Canola',
'count': 3
}, {
'product': 'Olive',
'count': 4
}
]
}
]
}
]
}
如何获得所需的json格式? 感谢您的帮助
我认为您正在询问如何将Flask SQLAlchemy模型转换为JSON以作为请求响应发送。我将详细说明这一点:
我通常实现一个类,我的所有模型都从该类继承,该类提供了必要的基本功能。下面是一个例子(请注意,有一百万种方法可以做到这一点,这只是我使用的快速灵活的方法):
下面是如何使用它:
这个
BaseModel
将为您提供的是为您的所有模型提供一个函数to_json
,该函数基本上只需将对象转换为一个字典,然后您就可以从Flask响应它。因此,在您的示例中,可以对该列表中的每个项目调用to_json
,将它们全部转换为JSON对象这很好,因为它将获取表中每一列的值,还将获取您定义的任何属性,忽略函数和“隐藏”属性(即,具有前导“30;”)并允许您添加要忽略的自定义属性
这种方法非常适合入门,但效率非常低,如果API服务于大量请求,则会降低速度。因此,对于那些寻找序列化模型对象的更快方法的人来说,我推荐的marshmallow远远不够
相关问题 更多 >
编程相关推荐