【发布时间】:2015-04-10 22:03:15
【问题描述】:
我使用 sqlalchemy ORM。我有以下自定义列类型和表映射类:
class JSONEncodedDict(TypeDecorator):
impl = VARCHAR
def process_bind_param(self, value, dialect):
if value is not None:
value = json.dumps(value)
return value
def process_result_value(self, value, dialect):
if value is not None:
value = json.loads(value)
return value
Base = declarative_base()
class Task(Base):
__tablename__ = 'tasks'
id = Column(INT, primary_key=True)
description = Column(JSONEncodedDict)
created = Column(TIMESTAMP)
updated = Column(TIMESTAMP)
我想使用运算符'like'查询对象:
tasks = session.query(Task).filter(Task.description.like("%some pattern%")).all()
但据我所知,方法process_bind_param 也转换了like 运算符的参数。所以在 sql trace 中我看到了
...WHERE description LIKE '"%some pattern%"'
而不是
...WHERE description LIKE '%some pattern%'
所以没有匹配的行。
如何以我想要的方式使用LIKE 运算符执行查询?
【问题讨论】:
标签: python postgresql orm sqlalchemy