繁体   English   中英

sqlalchemy 过滤使用文本和类似 json 列

[英]sqlalchemy filtering using text and like a json column

我正在处理一个需要过滤 json 字段的查询,当我使用相等运算符进行比较时它正在工作

User.query.filter(text("COALESCE(user.country_info ->> 'name', '') = 'UK'")).all()

但是当我使用类似的运算符search_value = '%{}%'.format(text_search)其中文本搜索是像'united'这样的字符串时,它不起作用

User.query.filter(text(f"COALESCE(user.country_info ->> 'name', '') like '{search_value}'")).all()

当我在文本中打印查询时,我看到我得到了类似的东西

user.country_info ->> 'name' Like '%%united%%'

如果我删除%符号,查询就变成了

user.country_info ->> 'name' Like 'united'

这里有任何帮助

找到了正确的方法,我不得不使用 sqlalchmey 表达式 bindparam

from sqlalchemy.sql.expression import bindparam
from sqlalchemy.types import String

search_value = "%{}%".format(search_value)    
search_param = bindparam('search_text', search_value, String)
User.query.filter(text(f"COALESCE(user.country_info ->> 'name', '') like :search_text").bindparams(search_param)).all()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM