在 SQLAlchemy 中,如何过滤我的查询以仅包含具有非空 jsonb 列值的行?

In SQLAlchemy how can I filter my query to only include rows with non-empty jsonb column values?

我有一个正在查询的数据库 table,简化的示例如下所示:

+----------+---------+----------------------------------------------------------------------------------------------------------------+
| entry_id | list_id | availability                                                                                                   |
|----------+---------+----------------------------------------------------------------------------------------------------------------|
| 130      | 199     | {"2021-10-20": {"value": "no_reply", "notify": false}, "2021-10-21": {"value": "no_reply", "notify": false}}   |
| 131      | 199     | {"2021-10-20": {"value": "no_reply", "notify": false}, "2021-10-21": {"value": "no_reply", "notify": false}}   |
| 132      | 199     | {}                                                                                                             |
| 129      | 199     | {"2021-10-20": {"value": "available", "notify": false}, "2021-10-21": {"value": "available", "notify": false}} |
+----------+---------+----------------------------------------------------------------------------------------------------------------+

在我的查询中,我只想包含可用性列 dict 具有键的行,并使用默认值“{}”过滤掉所有空行(例如 entry_id 132)

我在查询中使用 ListEntry.availability != '"{}"' 作为过滤器取得了一些成功,但它似乎有点老套,我想知道是否有更好的方法?

您无法将比较的右侧转换为 jsonb:

SELECT * FROM ListEntry WHERE availability <> '{}'::jsonb