PostgreSQL psycopg2返回一个字符串元组而不是元组元组?

时间:2015-04-17 04:36:20

标签: postgresql psycopg2 fetchall

我有一个奇怪的问题,我不太确定在搜索Google / SO后如何修复它没有发现类似的东西。

当我试图从光标中获取查询结果时,它会给我一个元组元组,除了元组是字符串?以下是代码。

def queryFeeds(db):
   sql = """SELECT ngo.n_id, feeds.url FROM ngo 
    JOIN feeds ON ngo.n_id = feeds.n_id;"""

   db.c.execute(sql)

   feeds = db.c.fetchall()

   return feeds

此处的打印输出是函数返回的feeds变量:

feeds[0]
('(277,http://resultsuk.wordpress.com/feed)',)

feeds[0][0]
'(277,http://resultsuk.wordpress.com/feed)'

type(feeds[0][0])
<type 'str'>

feeds[0][0][0:10]
'(277,http:'

db只是一个具有数据库连接的类,其中db.c是游标。提前致谢。删除的数据是http://因为我的声誉很低,所以我不会发帖。

干杯,

卢卡斯

1 个答案:

答案 0 :(得分:4)

SELECT子句中的字段中删除括号。

我有同样的问题(虽然使用RETURNING子句而不是SELECT),@ user2524674的评论值得回答。在编辑问题之前,SELECT子句中的字段用括号括起来,即

SELECT (ngo.n_id, feeds.url)

返回的结果是字符串而不是实际的元组。将此更改为

SELECT ngo.n_id, feeds.url

导致psycopg2返回实际的元组值。