【发布时间】:2019-08-27 06:49:28
【问题描述】:
我有一个特定的用例,但我的问题通常与执行此操作的最佳方式有关。
我有三张桌子
订单 - 主键 order_id
OrderLine - 链接表 与 order_id、product_id 和数量。一个订单有 1 个或多个订单行
产品-主键product_id,每个订单行有一个产品
在 sqlachemy / python 中我如何生成嵌套的 JSON:
{
"orders": [
{
"order_id": 1
"some_order_level_detail": "Kansas"
"order_lines": [
{
"product_id": 1,
"product_name": "Clawhammer",
"quantity": 5
},
...
]
},
...
]
}
可能的想法
破解连续查询
如果可能的话,我想摆脱的第一个想法是使用列表理解和蛮力方法。
def get_json():
answer = {
"orders": [
{
"order_id": o.order_id,
"some_order_level_detail": o.some_order_level_detail,
"order_lines": [
{
"product_id": 1,
"product_name": Product.query.get(o_line.product_id).product_name,
"quantity": 5
}
for o_line in OrderLine.query.filter(order_id=o.order_id).all()
]
}
for o in Order.query.all()
]
}
这很难保持将查询与 json 混合。理想情况下,我想先进行查询...
先获取连接结果,然后以某种方式操作
第二个想法是做一个连接查询来连接OrderLine中每行显示的三个表的订单和产品详细信息。
我对 pythonista 的问题是有没有一种很好的方法可以将它转换为嵌套的 json。
另一种方式?
这似乎真的是一个普遍的要求我真的想知道这种事情是否有书籍方法? 有没有this的SQLAchemy版本@
【问题讨论】:
标签: python json sqlalchemy flask-sqlalchemy