7

私は奇妙な問題を抱えており、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 がカーソルであるデータベース接続を持つ単なるクラスです。前もって感謝します。削除されたデータは、私の評判が低いため、SO が投稿を許可しない http:// リンクです。

乾杯、

ルーカス

4

1 に答える 1

9

SELECT句のフィールドから括弧を削除します。

私はこれと同じ問題を抱えていましたが(ただし、のRETURNING代わりに節がありましたSELECT)、@ user2524674によるコメントは答えに値します。質問が編集される前は、句のフィールドはSELECT括弧で囲まれていました。

SELECT (ngo.n_id, feeds.url)

返される結果は、実際のタプルではなく文字列です。これを

SELECT ngo.n_id, feeds.url

psycopg2実際の値のタプルを返します。

于 2015-11-02T10:56:24.773 に答える