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

标签 python database postgresql psycopg2 temp-tables

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

首先,我假设只要连接处于事件状态,临时表就会一直存在。这是真的?但更重要的是,psycopg2 数据库连接是否会通过重新建立连接来自动处理瞬时连接丢失?我正在运行的查询非常耗时,因此我担心这种情况可能会发生。在这种情况下,有什么方法可以知道连接何时刷新,以便我可以重新上传临时表?

最佳答案

Firstly, I've assumed the temporary table will hang around as long as the connection is alive. Is this true?

临时表会在 session 结束时自动删除。因此, session 结束时不会遗漏任何垃圾。

But more importantly, does the db connection ever drop out and refresh?

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

In which case is there some way of knowing when the connection refreshes so I can reupload the temporary table?

我不确定我是否明白你的问题,但有一点很清楚:如果 session 终止,临时表就会终止。如果您的客户端配置为自动重试与数据库建立连接,它将不会再次看到该表。如果您想在尝试创建已存在的表时避免出现错误消息,请尝试:

CREATE TEMPORARY TABLE IF NOT EXISTS tb_tmp (...);

并确保它是空的:

TRUNCATE TABLE tb_tmp;

关于python - 如果 postgres 连接刷新,我是否需要重新创建临时表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59947300/

相关文章:

database - 显示主 : foreign key relationships in Visio database diagram

python - 安装 pgdb : pg_config tool is not available

postgresql - Docker Postgres容器中的.sql文件不会自动执行

python - 用 SymPy 求解微分方程

python - 使用正则表达式从目录中解析文本

php - 将数据库连接/对象放入 PHP 函数中的最佳方法是什么?

php - MYSQL 查询未正确链接

ruby-on-rails - RailsTutorial 3.2 Ch 11 - PostgreSQL 语法错误中断状态提要

python - OpenCV。如何在 VirtualBox 中连接摄像头

python - 循环并创建对象数组