使用SQLAlchemy刷新物化视图

3

我有以下设置:

Postgres

在Postgres(Aurora)中,我设置了一个材料化视图。由于只有视图的所有者可以刷新它,因此我还创建了以下函数以允许其他用户刷新它:

CREATE OR REPLACE FUNCTION refresh_views()
    RETURNS void
    SECURITY DEFINER
AS
$$
BEGIN
    REFRESH MATERIALIZED VIEW my_schema.my_view with data;
    RETURN;
END;
$$ LANGUAGE plpgsql;

当我进入SQL终端并运行以下代码时,视图会按预期进行刷新:
SELECT refresh_views();

Python

我们使用Python与SQLAlchemy/Pandas,对于大多数情况都能很好地运行。然而,我似乎无法从Python中正确地使其工作。以下两个版本都能成功运行且用时大致相同(约1分钟),但是视图没有随后更新。

cxn.execute(text("SELECT refresh_views();"))
pd.read_sql(text("SELECT refresh_views();"), cxn)

有任何想法为什么这不起作用?
1个回答

5

谢谢,这个可行!但我觉得有点奇怪,因为其他语句(DDL和UPDATE命令)都能正常执行...... - Elias Mi
谢谢你的回答。但是我真的很想知道为什么有这种行为可能是一个好主意。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接