Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.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
Python Postgresql:如何使用psycopg2将一列从一个表复制到另一个表?_Python_Postgresql - Fatal编程技术网

Python Postgresql:如何使用psycopg2将一列从一个表复制到另一个表?

Python Postgresql:如何使用psycopg2将一列从一个表复制到另一个表?,python,postgresql,Python,Postgresql,我正在python中使用psycopg2来管理我的数据库 我创建了两个表。一个名为data,我想用一些数据填充它。为此,我从.csv文件中创建了一个名为temporarytable的临时表 我想复制列numberOfResidents。所以我现在做的是: ### Add Column import psycopg2 as ps stat1 = """ ALTER TABLE data ADD COLUMN numberofinhabitants integer""" con = ps.

我正在
python
中使用
psycopg2
来管理我的数据库

我创建了两个表。一个名为
data
,我想用一些数据填充它。为此,我从
.csv
文件中创建了一个名为
temporarytable
的临时表

我想复制列
numberOfResidents
。所以我现在做的是:

### Add Column
import psycopg2 as ps    
stat1 = """  ALTER TABLE data ADD COLUMN numberofinhabitants integer"""
con = ps.connect(dbname = 'mydb', user='postgres', host='localhost', password='mypd')
con.autocommit = True
cur = con.cursor()
cur.execute(stat1)
cur.close()
con.close()


### Copy Column
stat2 = """INSERT INTO data (numberofinhabitants) SELECT numberofinhabitants FROM temporarytable"""
con = ps.connect(dbname = 'mydb', user='postgres', host='localhost', password='mypd')
con.autocommit = True
cur = con.cursor()
cur.execute(stat2)
cur.close()
con.close()
但是我得到了以下错误

ProgrammingError: column "numberofinhabitants" does not exist
LINE 1: INSERT INTO data (numberofinhabitants) SELECT numberofinhabi...
                                                      ^
HINT:  There is a column named "numberofinhabitants" in table "data", but it cannot be referenced from this part of the query.
下面是
pgAdmin3
SELECT*from temporarytable之后的屏幕截图


我认为问题在于PostgreSQL的列区分大小写。您应该将此作为stat2进行尝试:

stat2 = """INSERT INTO data (numberofinhabitants) SELECT "numberOfInhabitants" FROM temporarytable"""

请注意,对于包含大写字符的列,也应使用

您在哪里创建
临时表
?难道在您尝试复制时,临时表已经被删除了吗?也许您不应该关闭连接并重新打开它(这可能会删除临时表)或者你应该创建一个常规表。@franciscosolima这是一个我称之为
temporarytable
Oh nevermind的常规表,那么你能显示
SELECT*FROM temporarytable
的输出吗?