我在SQLAlchemy的如下表:查询JSON与SQLAlchemy的使用`sqlalchemy.types.JSON`数据类型
class FooModel(Base):
__tablename__ = 'table'
id = sqla.Column('id', INTEGER, primary_key=True)
info = sqla.Column(JSON)
我想执行以下查询:
result = session.query(FooModel).filter(
FooModel.info['key1'].astext.cast(INTEGER) == 1).all()
的上面的查询,只要在我的表中的列info
是sqlalchemy.dialects.postgresql.JSON
类型的工作就好了。但是,如果我用JSON
从sqlalchemy.JSON
我得到以下错误:AttributeError: Neither 'BinaryExpression' object nor 'Comparator' object has an attribute 'astext'
。
由于上述是最基本的过滤器可以有,这是否意味着,为了做任何类型的查询,你必须从一个特定的SQL方言使用类型的?换句话说:是否有可能修改上面的查询,并使其运行,当我使用sqlalchemy.JSON类型? (这将使代码在两个PostreSQL和MySQL工作)