无法使用psycopg2在postgres中创建临时表

问题描述 投票:0回答:1

我正在尝试在postgres中创建一个临时表。我正在使用psycopg2。但是,执行我的python脚本后,我看不到正在创建的表。如果我尝试创建一个普通表,它将执行没有任何问题。我有什么想念的吗?我的意图是创建一个临时表,然后将数据导入到临时表中,进行一些处理,然后将临时表中的数据推入永久表中。

下面是我的代码

import psycopg2

con = None
con = psycopg2.connect("dbname='abc' user='abc' host='localhost' password='abc'")
cur = con.cursor()
cur.execute("create TEMP TABLE mytable(id int);")
con.commit()
con.close()

如果我使用终端执行相同的create TEMP TABLE mytable(id int);,则会创建临时表。

感谢@Thom Brown的回复。

我确实想到了你的意思。为了绕过con.close()的问题,我做了以下工作,但没有成功。

con = None
con = psycopg2.connect("dbname='abc' user='abc' host='localhost' password='abc'")
cur = con.cursor()
cur.execute("create temp table mynewtable(id int) on commit delete rows;")
cur.execute("BEGIN TRANSACTION;")
cur.execute("insert into mynewtable values(10);")
//created a new normal table from console
cur.execute("select * into dbo.test from mynewtable;")
#cur.execute("select * into test from mynewtable;")
cur.execute("commit")
con.commit()
con.close()

Plz帮助

mysql postgresql psycopg2 psql
1个回答
0
投票

临时表在会话结束时被破坏。当您使用con.close()关闭连接时,临时表将被删除。

如果要使用临时表,则需要在关闭连接之前进行。

© www.soinside.com 2019 - 2024. All rights reserved.