我使用烧瓶和mysql为我的一个简单的应用程序创建一个API。我不太确定如何将具有1到多个关系的表上连接的平面查询结果转换为表结构的json对象。 下面是我希望执行的查询示例。每个食谱可能有很多说明和很多成分。
SELECT r.id
, r.name
, r.description
, rd.text
, ri.name
, ri.amount
FROM recipes r
LEFT JOIN recipe_directions rd ON rd.recipe_id = r.id
LEFT JOIN recipe_ingredients ri ON ri.recipe_id = r.id
我希望将这个查询的平面结果转换成json对象,如下所示。mysql连接器或烧瓶中是否已经有一些东西可以用来完成此任务?
[{
id: 1,
name: 'Recipe 1',
description: '...',
directions: [{
text: 'Cook the rice'
},
{
text: 'Do the next step...'
}],
ingredients: [{
name: 'Rice',
amount: '1 cup'
},
{
name: 'Onion',
amount: '1'
}]
},
{
id: 2,
name: 'Recipe 2',
description: '...',
directions: [...]
ingredients: [...]
}]
问题来源StackOverflow 地址:/questions/59385703/convert-flat-query-results-into-a-more-defined-table-structure
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
您要查找的是GROUP_CONCAT()函数。这将允许您在每个返回的行中从连接的表中返回多条记录。你仍然需要做一些格式化,但是这样你就可以将每个食谱作为一个记录返回,其中包含它的方向和成分。 您也可以考虑使用一个类似于records的包,它的.as_dict()函数可以使事情变得更简单。