小编Dor*_*lon的帖子

Python SqlAlchemy + MySql 通过 JSON 列数据过滤

我有一个带有 JSON 列的Movies表,定义为:

movie_info = Column('movie_info', JsonEncodedDict)
Run Code Online (Sandbox Code Playgroud)

其中 JsonEncodedDict:

class JsonEncodedDict(TypeDecorator):
    impl = Text

    def process_bind_param(self, value, dialect):
        if value is None:
            return '{}'
        else:
            return json.dumps(value)

    def process_result_value(self, value, dialect):
        if value is None:
            return {}
        else:
            return json.loads(value)
Run Code Online (Sandbox Code Playgroud)

插入工作按预期进行。当我想要查询数据并对我的列执行过滤时,我的问题就开始了。假设我有一条记录,其中movie_info列是:

{
    "title": "The Movie - 3",
    "review": "Best movie I have ever seen"
}
Run Code Online (Sandbox Code Playgroud)

我想查询我的表并获取评论包含“最佳”的所有记录

我尝试过类似的事情

session.query(Movies).filter('best' in Movies.movie_info['review']).all()

session.query(Movie).filter('best' in func.json_compare(Movies.movie_info['review'])).all()
Run Code Online (Sandbox Code Playgroud)

还有几个查询,但没有任何效果。任何想法将不胜感激

python mysql sqlalchemy

2
推荐指数
1
解决办法
4115
查看次数

标签 统计

mysql ×1

python ×1

sqlalchemy ×1