【发布时间】:2015-07-10 12:48:57
【问题描述】:
假设我有一个 Postgres 数据库 (9.3),并且有一个名为 Resources 的表。在 Resources 表中,我有字段 id 是一个 int 和 data 这是一个 JSON 类型。
假设我在所述表中有以下记录。
- 1, {'firstname':'Dave', 'lastname':'Gallant'}
- 2, {'firstname':'John', 'lastname':'Doe'}
我想要做的是编写一个查询,该查询将返回所有记录,其中数据列具有一个 json 元素,其姓氏等于“Doe”
我试着写这样的东西:
records = db_session.query(Resource).filter(Resources.data->>'lastname' == "Doe").all()
然而,Pycharm 在“->>”上给了我一个编译错误
有谁知道我将如何编写过滤子句来满足我的需要?
【问题讨论】:
-
尝试使用
astext喜欢:...filter(Resources.c.data["lastname"].astext == "Doe").all()看看是否有效 -
这似乎可行,但我必须删除“.c”并直接转到“Resources.data”。谢谢!
-
啊...是的,我通常使用
.c作为列名...很高兴您解决了这个问题。然后我将在上面发布作为答案:-) -
你必须使用
.c,如果你不使用我认为的声明性基础(table = sqlalchemy.Table(...))
标签: postgresql sqlalchemy