SQLAlchemy查询以查找和替换列中存在的子字符串

时间:2015-06-11 10:06:20

标签: python postgresql sqlalchemy

我正在尝试在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?

1 个答案:

答案 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()