我有以下设置:
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)
有任何想法为什么这不起作用?