psycopg2 连接问题,无法选择列,但连接正常

Posted

技术标签:

【中文标题】psycopg2 连接问题,无法选择列,但连接正常【英文标题】:psycopg2 connect problem,can't select column , but connection is ok 【发布时间】:2019-02-20 02:56:14 【问题描述】:

我通过psycopg2连接了数据库,但是无法选择列,使用“select *”就可以了。

import psycopg2
db = psycopg2.connect(host='ip',port='port',user='user', password='pw', 
database='basdw')
print("Opened database successfully")
cur = db.cursor()
query = "SELECT UVCOOKIE FROM bas_appcvevent LIMIT 10"
cur.execute(query)
data = cur.fetchall()
print(data)
db.close()

Traceback(最近一次调用最后一次): 第 24 行,在 cur.execute(查询) psycopg2.ProgrammingError:

列“uvcookie”不存在第 1 行:SELECT UVCOOKIE FROM bas_appcvevent LIMIT 10

但是表中存在uvcookie。如果我使用“select *”,就可以了。

import psycopg2
db = psycopg2.connect(host='ip',port='port',user='user', password='pw', 
database='basdw')
print("Opened database successfully")
cur = db.cursor()
query = "SELECT UVCOOKIE FROM bas_appcvevent LIMIT 10"
cur.execute(query)
data = cur.fetchall()
print(data)
db.close()

输出:

[(121, 1494990395269, None, 0, None, 0, 'j1wb5963_6_6_34_CA5F6F05-5273-4107-A1A2-3F98DE7DCA88', .....]

【问题讨论】:

【参考方案1】:

你能显示\d bas_appcvevent的输出吗?Postgresql 在大小写之间没有区别,所以即使你输入:

SELECT UVCOOKIE FROM bas_appcvevent LIMIT 10;

postresql 会:

SELECT uvcookie FROM bas_appcvevent LIMIT 10;

如果列名实际上是大写的,则使用这样的双引号:

SELECT "UVCOOKIE" FROM bas_appcvevent LIMIT 10;

【讨论】:

以上是关于psycopg2 连接问题,无法选择列,但连接正常的主要内容,如果未能解决你的问题,请参考以下文章

无法将 postgreSQL 与 psycopg2 连接

Python模拟psycopg2连接和游标

Docker- django 在连接到 postgres 时抛出错误:psycopg2.OperationalError:无法连接到服务器:连接被拒绝

Psycopg2 在 postgres 数据库中插入 python 字典

连接后如何在 Pyspark Dataframe 中选择和排序多个列

psycopg2 无法插入特定列