我在PostgreSQL中有一个物化视图,我希望定期更新它。当我尝试从Django manage.py shell手动更新它时,刷新实例化视图的命令成功完成,但是在我离开shell之后,这些更改似乎消失了。例如,在我的第一个会话中,我运行以下命令:
>>> Model.objects.get(...).subscribers.count
2L
>>> RefreshMaterializedViews()
>>> Model.objects.get(...).subscribers.count
3L然后,我退出shell,返回并再次运行查询:
>>> Model.objects.get(...).subscribers.count
2LRefreshMaterializedViews函数的编写方式如下:
def RefreshMaterializedViews():
for materialized_view in MATERIALIZED_VIEWS:
cursor = connection.cursor()
try:
cursor.execute("REFRESH MATERIALIZED VIEW %s;" % materialized_view)
finally:
cursor.close()因此,PostgreSQL似乎只刷新了当前连接的实例化视图。另一方面,进入数据库外壳本身并简单地运行REFRESH MATERIALIZED VIEW xxx;是可行的。
发布于 2014-08-08 08:51:06
你好像忘了:
connection.commit()https://stackoverflow.com/questions/25186751
复制相似问题