2016-11-21 71 views
0

我在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() 

的上面的查詢,只要在我的表中的列infosqlalchemy.dialects.postgresql.JSON類型的工作就好了。但是,如果我用JSONsqlalchemy.JSON我得到以下錯誤:AttributeError: Neither 'BinaryExpression' object nor 'Comparator' object has an attribute 'astext'

由於上述是最基本的過濾器可以有,這是否意味着,爲了做任何類型的查詢,你必須從一個特定的SQL方言使用類型的?換句話說:是否有可能修改上面的查詢,並使其運行,當我使用sqlalchemy.JSON類型? (這將使代碼在兩個PostreSQL和MySQL工作)

回答

0

也許你可以嘗試如下 from sqlalchemy import JSON from sqlalchemy.sql.expression import cast result = session.query(FooModel).filter(FooModel.info['key1'] == cast(1, JSON).all()