我正在尝试在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帮助
临时表在会话结束时被破坏。当您使用con.close()
关闭连接时,临时表将被删除。
如果要使用临时表,则需要在关闭连接之前进行。