Python 如果postgres连接刷新,是否需要重新创建临时表?

Python 如果postgres连接刷新,是否需要重新创建临时表?,python,database,postgresql,psycopg2,temp-tables,Python,Database,Postgresql,Psycopg2,Temp Tables,所以我想上传一个临时表,使用csv文件填充它,然后用相同的连接运行一系列其他查询。目前我正在上传一个普通的表,进行查询,然后删除它。但是我想将其设置为临时性的,以避免混淆,并避免如果代码在有机会删除表之前由于某种原因(异常/调试等)而停止,那么会在数据库中留下大量数据。我在python中使用psycopg2完成所有这些 首先,我假设只要连接处于活动状态,临时表就会挂起。这是真的吗?但更重要的是,psycopg2 db连接是否会通过重新建立连接自动处理瞬时连接中断?我运行的查询非常耗时,因此我担心

所以我想上传一个临时表,使用csv文件填充它,然后用相同的连接运行一系列其他查询。目前我正在上传一个普通的表,进行查询,然后删除它。但是我想将其设置为临时性的,以避免混淆,并避免如果代码在有机会删除表之前由于某种原因(异常/调试等)而停止,那么会在数据库中留下大量数据。我在python中使用psycopg2完成所有这些

首先,我假设只要连接处于活动状态,临时表就会挂起。这是真的吗?但更重要的是,psycopg2 db连接是否会通过重新建立连接自动处理瞬时连接中断?我运行的查询非常耗时,因此我担心会发生这种情况。在这种情况下,是否有某种方法可以知道连接何时刷新,以便重新加载临时表

首先,我假设临时表将在 连接处于活动状态。这是真的吗

会话结束时,
临时表将自动删除。因此,会话结束时不会留下任何垃圾

但更重要的是,db连接是否曾经中断并刷新

通常会话不会自动终止。如果您想知道临时表是否会在其他会话中产生任何冲突,您不必担心:临时表只存在于当前会话中

在这种情况下,是否有某种方法可以知道连接何时发生 刷新以便我可以重新加载临时表

我不确定我是否理解您的问题,但有一件事是明确的:如果会话终止,临时表也将终止。如果您的客户端配置为自动重试与数据库建立连接,则它将不会再次看到该表。如果要避免在尝试创建已存在的表时出现错误消息,请尝试:

CREATE TEMPORARY TABLE IF NOT EXISTS tb_tmp (...);
为了确保它是空的:

TRUNCATE TABLE tb_tmp;
首先,我假设临时表将在 连接处于活动状态。这是真的吗

会话结束时,
临时表将自动删除。因此,会话结束时不会留下任何垃圾

但更重要的是,db连接是否曾经中断并刷新

通常会话不会自动终止。如果您想知道临时表是否会在其他会话中产生任何冲突,您不必担心:临时表只存在于当前会话中

在这种情况下,是否有某种方法可以知道连接何时发生 刷新以便我可以重新加载临时表

我不确定我是否理解您的问题,但有一件事是明确的:如果会话终止,临时表也将终止。如果您的客户端配置为自动重试与数据库建立连接,则它将不会再次看到该表。如果要避免在尝试创建已存在的表时出现错误消息,请尝试:

CREATE TEMPORARY TABLE IF NOT EXISTS tb_tmp (...);
为了确保它是空的:

TRUNCATE TABLE tb_tmp;
psycopg2 db连接是否通过重新建立连接自动处理瞬时连接断开

你的意思是说它会变得不耐烦,杀死一个活跃但“停滞”的(例如网络拥塞)连接,并用一个新的连接替换它吗?不,如果您愿意,您可能可以编写代码来实现这一点(但为什么要这么做呢?),但psycopg2本身不会这么做

psycopg2 db连接是否通过重新建立连接自动处理瞬时连接断开


你的意思是说它会变得不耐烦,杀死一个活跃但“停滞”的(例如网络拥塞)连接,并用一个新的连接替换它吗?不。如果您愿意,您可能可以编写代码来实现这一点(但您为什么要这么做?),但psycopg2本身不会这样做。

我想知道psycopg2 db连接是否真正持久。如果我正在运行一系列耗时的查询,在此期间db连接暂时中断,然后重新连接,那么我的临时表将消失,必须重新创建,对吗?@Jonathan是的,如果连接中断,表将立即消失:)我编辑了这个问题,试图让它更清楚。基本上,我想知道如果有一些瞬间的连接中断,psycopg2是否会自动重新连接到db。在这种情况下,我的代码将继续运行,但我的临时表将消失。在这种情况下,如何判断何时发生了这种情况,以便重新创建表?“如果这种情况从未发生过,那就不必担心了。”乔纳森我明白了。在这种情况下,恐怕我帮不了你:)我不太熟悉
psycopg2
,所以我不能说它是否会尝试自动建立连接。如果是这样的话,前面的临时表就会消失,您必须从头开始重新导入它。db方面的建议是:在脚本开始时,通过SQL检查表是否存在:
SELECT*from information\u schema.tables,其中table\u schema='public'和table\u name='t'
,或者再次尝试创建表:
create TEMP table if NOT exists祝你好运!是的,这是个好主意,也许是暂时的解决办法。谢谢你的帮助!我想知道psycopg2数据库连接是否真的是持久的。如果我正在运行一系列耗时的查询,在此期间db连接暂时中断,然后重新连接,那么我的临时表将消失,必须重新创建,对吗?@Jonathan是的,如果连接中断,表将立即消失:)我编辑了这个问题,试图让它更清楚。基本上,我想知道如果有一些瞬间的连接中断,psycopg2是否会自动重新连接到db。在这种情况下,我的代码将继续运行,但我的临时表将消失。在这种情况下,我如何知道何时发生了这种情况,以便记录