SQLAlchemy:类运算符和自定义类型

2024-04-19 17:26:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用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”查询对象:

^{pr2}$

但据我所见,方法process_bind_param也转换了like运算符的参数。所以在sql跟踪中我看到了

...WHERE description LIKE '"%some pattern%"'

而不是

...WHERE description LIKE '%some pattern%'

所以没有行匹配。在

如何以我想要的方式使用LIKE运算符执行查询?在


Tags: selfifparamisvaluebinddef运算符