我在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工作)