Попробуйте:
# test columns
userid = "dUmMy"
j = "name" # name of the column
mappedTable = i.mappedClass.__table__ # assuming use of Declarative. if not, mappedTable is the Table object mapped to i.mappedClass
_stmt = (mappedTable.update().where(getattr(i.mappedClass, j).ilike("%"+ userid +"%")).
values({getattr(i.mappedClass, j): func.lower(getattr(i.mappedClass, j))})
)
session.execute(_stmt)
создает SQL:
UPDATE person SET name=lower(person.name) WHERE lower(person.name) LIKE lower(?)
Фактически вы можете обновить все записи в таблице, просто удалив предложение where
:
_stmt = mappedTable.update().values({getattr(i.mappedClass, j): func.lower(getattr(i.mappedClass, j))})
session.execute(_stmt)
, который производит SQL следующим образом:
UPDATE person SET name=lower(person.name)