我正在尝试在SqlAlchemy中编写一个查询,以查找子字符串并将其替换为另一个字符串(如果它存在于列中)。实现这一目标的最佳方法是什么?
我正在尝试使用regexp_replace
。我无法弄清楚如何使用它。到目前为止我尝试的是:
regexp_statement = table.select(sqlalchemy.func.regexp_replace(*regexp))
但这会转换为错误的SQL查询。 Select * from table_name where regexp_replace(string, search_string, replace_string)
如何在sqlalchemy中正确使用regexp_replace?
答案 0 :(得分:0)
<强>更新强>
您需要使用update
,而不是select
。试着用这个:
replace_func = sqlalchemy.func.regexp_replace(
table.c.column,
your_string_to_replace,
your_string_to_replace_with
)
table.update(values={table.c.column: replace_func})
<强> OLD 强>
您可以使用原始sql:
sql_expr = (
"update {table} set {field} = " +
"replace({field}, {str_to_repl}, {str_to_repl_with});"
).format(
table=your_table_name,
field=your_field_name,
str_to_repl=your_string_to_replace,
str_to_repl_with=your_string_to_replace_with,
)
session.execute(sql_expr)
session.commit()