Sqlalchemy如何生成只从jsonb列返回字段的查询

2024-05-16 02:44:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图找到最好的方法来生成一个sql查询,从数据库的jsonb列中获取一个特定的字段。我想生成这样的查询:

select images->'main' from scenes where id = 1;

我找到了用于with entities的this引用,这将正确生成查询:

^{pr2}$

但是,它返回的结果是元组而不是模型对象:

>>> x                                                                                                                                                                                                                                  
([{u'url': u'foo.jpg', u'priority': 1}],)        

我考虑过使用load_only,但是这个API似乎没有一种方法来指定列的jsonb字段,而只是指定一个完整的列名。在

有没有办法生成查询并将模型对象作为返回值?在


Tags: 对象方法from模型id数据库sqlmain
2条回答

假设Scene是一个ORM类,您可以使用Session.query()将值作为元组返回

x = session.query(Scene.images['main']).filter_by(id=1).one()
print x
^{pr2}$

或模型对象(Scene的实例)

scene = session.query(Scene).filter_by(id=1).one()
print scene.images['main']
SELECT * FROM scenes WHERE id = 1;
x = db.session.query(Scene.images['main'].label('main_image')).first()
print(x.main_image)

相关问题 更多 >