Python 将每个带有jsonb_的Postgresql查询转换为sqlalchemy
我有一个查询,每个查询有两个jsonb_语句,我需要将其转换为sqlalchemy。 我曾尝试使用子查询、别名,甚至op fn来逐字翻译查询,但由于内部错误而失败 我特别感到困惑的是,我不知道如何访问从每个函数的第一个jsonb_返回的{key:value}对 这就是我目前所拥有的 v=列“值”,类型=JSONB k=列'key',类型=JSONB 极性=v[“极性”]。astext q=db.session.query db.func.countpolarity.label'count', 其他领域 \ 。从MyModel中选择_\ .joindb.func.jsonb_eachMyModel.json_content['myMap'].别名'items',sa.true\ 参加 ... 困在这里 我想在这里访问上一次连接返回的数据 \ 分组方式和订单方式在此处 全部的 询问 -我的桌子 --身份证 --json_内容 选择 countd.value->“极性”作为计数, d、 值->>“极性”作为极性, d、 钥匙作为钥匙 来自MyT表 加入jsonb_eacht.json_content->'myMap'm on true 在true上加入jsonb_eachm.value->“data”-“text”d 按d.值分组->>“极性”,d.键; 我想要得到的结果集Python 将每个带有jsonb_的Postgresql查询转换为sqlalchemy,python,postgresql,sqlalchemy,Python,Postgresql,Sqlalchemy,我有一个查询,每个查询有两个jsonb_语句,我需要将其转换为sqlalchemy。 我曾尝试使用子查询、别名,甚至op fn来逐字翻译查询,但由于内部错误而失败 我特别感到困惑的是,我不知道如何访问从每个函数的第一个jsonb_返回的{key:value}对 这就是我目前所拥有的 v=列“值”,类型=JSONB k=列'key',类型=JSONB 极性=v[“极性”]。astext q=db.session.query db.func.countpolarity.label'count', 其
count polarity category
----------------------------
1 positive cate2
1 positive cate4
2 negative cate1
1 negative cate2
我试图查询的示例json对象
{
我的地图:{
0: {
数据:{
文本:Kooled,
类别1:{
极性:负
},
类别2:{
极性:正极
}
}
},
1: {
数据:{
文本:其他一些文本,
类别1:{
极性:负
},
类别2:{
极性:负
},
类别4:{
极性:正极
}
}
}
}
}
如果需要更多信息,请告诉我,而不是使用列,您可以使用别名,并结合已定义的配方和所示的查询
所以代码应该是这样的:
first_alias = aliased(jsonb_each(MyModel.json_content['myMap'])))
second_alias = aliased(jsonb_each(first_alias.c.value.op("->")("data").op("-")("text")))
polarity = second_alias.c.value.op('->>')('polarity')
q = db.session.query(
db.func.count(polarity).label('count'),
## other fields
)\
.select_from(MyModel)\
.join(first_alias, sa.true())\
.join(second_alias, sa.true())\
# group by and order by here
.all()
jsonb_each函数不是从Sqlalchemy函数导入的。它是按规定定制的