如何在SQLAlchemy中编写含CONCAT()的LIKE查询?
解决方案
原SQL的逻辑是判断固定字符串"somestring/example"是否以my_table表的value列值结尾,你的写法完全颠倒了匹配逻辑,所以无法生效。
正确的ORM写法(推荐)
先导入SQLAlchemy的func工具:
from sqlalchemy import func
然后构造查询:
query = MyTable.query.filter( func.literal("somestring/example").like(func.concat('%', MyTable.value)) ).first()
直接使用原生SQL片段的写法
如果更习惯原生SQL的表达,也可以用text构造条件:
from sqlalchemy import text query = MyTable.query.filter( text('"somestring/example" LIKE CONCAT(\'%\', value)') ).first()
两种写法都能实现你原SQL的逻辑,前者更符合SQLAlchemy的ORM风格,后者适合快速复用原生SQL片段。
内容的提问来源于stack exchange,提问作者nycelia
相关产品推荐
相关产品推荐

