【发布时间】:2022-01-15 01:06:45
【问题描述】:
我有以下设置:
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)
知道为什么这不起作用吗?
【问题讨论】:
标签: python sql postgresql sqlalchemy