【问题标题】:What is the correct syntax to search an HSTORE column with SQLAlchemy ORM (0.8)?使用 SQLAlchemy ORM (0.8) 搜索 HSTORE 列的正确语法是什么?
【发布时间】:2013-07-06 22:22:30
【问题描述】:

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

我正在尝试搜索具有特定值的 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: 关键字不能是表达式'

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

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

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

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

【问题讨论】:

    标签: python sqlalchemy flask flask-sqlalchemy hstore


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-15
      • 1970-01-01
      • 2022-08-24
      • 1970-01-01
      • 2013-11-21
      • 2019-05-28
      • 1970-01-01
      相关资源
      最近更新 更多