python - 使用 SQLAlchemy ORM (0.8) 搜索 HSTORE 列的正确语法是什么?

标签 python sqlalchemy flask flask-sqlalchemy hstore

我正在使用带有 flask-sqlachemy 扩展的 flask。

我正在尝试搜索具有特定值的 hstore 键的所有记录。

这是该列的设置:

from flask.ext.sqlalchemy import SQLAlchemy
from sqlalchemy.dialects.postgresql import HSTORE
from sqlalchemy.ext.mutable import MutableDict

db = SQLAlchemy()

class BookDB(db.Model):

    attributes = db.Column(MutableDict.as_mutable(HSTORE), nullable=False, default={ 'disabled' : '0'}, index=True)

这是我正在运行的查询:

results = BookDB.query.filter_by(attributes={ 'disabled' : '0' }).all()

这没有错误,但没有找到任何结果。

如果我这样做:

results = BookDB.query.filter_by(attributes['disabled']='0').all()

我收到错误:'SyntaxError: keyword can't be an expression'

如果我使用 filter() 而不是 filter_by(),我可以做到

results = BookDB.query.filter(BookDB.attributes['disabled']=='0').all()

这工作正常并产生正确的结果。

但是它与 filter_by() 一起使用的语法是什么?

最佳答案

filter_by 只是比较简单字段相等性时的一个方便快捷方式。它只接受关键字参数,因此只接受有效的 Python 名称。在这种情况下,改用 filter 是正确的。

关于python - 使用 SQLAlchemy ORM (0.8) 搜索 HSTORE 列的正确语法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17507632/

相关文章:

python - 将 bash shell 替换为 python 程序的 cmdline 界面

python - 当我希望通过升级内的 Session 对象更改数据时,如何测试 alembic 迁移?

python - 如何在 SQLAlchemy 中使用带范围 session 的嵌套事务?

python - 在自己的 Ubuntu 服务器上部署 Flask 应用程序错误

Python 错误 - 无法重定向设置的 url

python - 将目录作为命令行参数传递给 python 脚本

python - 如何将 Blender 2.8 插件限制到特定的主选项卡?

python - Flask:具有自定义域名的 Heroku 会中断 session 吗?

python - 设置类组成对象的属性的功能

oracle - SQLAlchemy MetaData.reflect 在 Oracle 数据库中找不到表