本文介绍了SQLAlchemy 使用通配符或 ILIKE 来更新语句的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要在更新语句中使用 ilike 但是当我尝试时它返回这个错误:

I need to use ilike in an update statement but it returns this error when I try:

InvalidRequestError:无法在 Python 中评估当前条件.为同步会话参数指定 'fetch' 或 False.

对于此代码:

meta.Session.query(i.mappedClass).filter(getattr(i.mappedClass, j).ilike("%"+userid+"%")).update({j:newUserId})

我可以使用诸如 regexp_replace 之类的东西,但这有点矫枉过正.我只是想让更新适应不区分大小写和两端的空格.

I could use something like regexp_replace but it's a bit overkill. I just want the update to accommodate case insensitivity and spaces at either end.

推荐答案

好吧,这令人沮丧!

我发现的简单解决方法是:

The simple workaround I found was this:

for i in model.dataTables:
for j in i.idColumn:
    rows = meta.Session.query(i.mappedClass).filter(getattr(i.mappedClass, j).ilike("%"+userid+"%")).all()
     for row in rows:
         setattr(row, j, newuserid)
meta.Session.commit()

这篇关于SQLAlchemy 使用通配符或 ILIKE 来更新语句的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-13 00:07