Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PostgreSQL 9.3';s REFRESH-MATERIALIZED-VIEW命令仅持续Django连接的长度_Django_Postgresql_Postgresql 9.3_Materialized Views - Fatal编程技术网

PostgreSQL 9.3';s REFRESH-MATERIALIZED-VIEW命令仅持续Django连接的长度

PostgreSQL 9.3';s REFRESH-MATERIALIZED-VIEW命令仅持续Django连接的长度,django,postgresql,postgresql-9.3,materialized-views,Django,Postgresql,Postgresql 9.3,Materialized Views,我在PostgreSQL中有一个物化视图,我希望定期更新。当我尝试从Django manage.py shell手动更新它时,刷新物化视图的命令成功完成,但在我离开shell之后,更改似乎消失了。例如,在我的第一次会话中,我运行以下命令: >>> Model.objects.get(...).subscribers.count 2L >>> RefreshMaterializedViews() >>> Model.objects.get(..

我在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
2L
RefreshMaterializedViews
函数的编写方式如下:

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有效。

好像你忘了:

connection.commit()
这听起来像是您没有提交事务,所有更改都会回滚。您的客户端是否使用
自动提交
运行?