使用 SQLAlchemy 替换 MySQL 字符串

Luk*_*uke 3 python mysql sqlalchemy

有没有办法SQLAlchemy执行MySQL字符串替换。我想找到一种在 SQLAlchemy 核心中执行以下操作的方法。

UPDATE your_table
SET your_field = REPLACE(your_field, 'from_str', 'to_str')
WHERE your_field LIKE '%from_str%'
Run Code Online (Sandbox Code Playgroud)

van*_*van 8

是的,在Column Elements and Expressions上阅读更多关于它的信息,但关键是使用func.MY_FUNCTION

func.REPLACE(YourTable.your_field, 'from_str', 'to_str')
Run Code Online (Sandbox Code Playgroud)

如果您从查询执行更新,它可能如下所示:

updated_rows = (
    session.query(YourTable)
    .filter(YourTable.your_field.like('%est%'))
    .update({YourTable.your_field: func.replace(YourTable.your_field, 'from_str', 'to_str')},
            synchronize_session=False)
    )
print("Updated {} rows".format(updated_rows))
Run Code Online (Sandbox Code Playgroud)