gpt4 book ai didi

python - SQLAlchemy:运算符 LIKE 和自定义类型

转载 作者:太空宇宙 更新时间:2023-11-03 11:02:39 24 4
gpt4 key购买 nike

我使用 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 运算符执行查询?

最佳答案

可以使用 literal() 绕过自动类型处理(或使用 type_ 参数强制您自己处理) :

Task.description.like(literal("%some pattern%"))

关于python - SQLAlchemy:运算符 LIKE 和自定义类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28439017/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com