Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1jzS4K-0002rV-No for pgsql-general@arkaria.postgresql.org; Sat, 25 Jul 2020 21:51:00 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1jzS4J-0002a0-L1 for pgsql-general@arkaria.postgresql.org; Sat, 25 Jul 2020 21:50:59 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1jzS4J-0002Zs-DP for pgsql-general@lists.postgresql.org; Sat, 25 Jul 2020 21:50:59 +0000 Received: from fossa.birch.relay.mailchannels.net ([23.83.209.62]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1jzS4F-0002UP-0h for pgsql-general@lists.postgresql.org; Sat, 25 Jul 2020 21:50:57 +0000 X-Sender-Id: dreamhost|x-authsender|karsten@terragis.net Received: from relay.mailchannels.net (localhost [127.0.0.1]) by relay.mailchannels.net (Postfix) with ESMTP id E5B61541049 for ; Sat, 25 Jul 2020 21:50:50 +0000 (UTC) Received: from pdx1-sub0-mail-a97.g.dreamhost.com (100-96-5-127.trex.outbound.svc.cluster.local [100.96.5.127]) (Authenticated sender: dreamhost) by relay.mailchannels.net (Postfix) with ESMTPA id 49717541069 for ; Sat, 25 Jul 2020 21:50:50 +0000 (UTC) X-Sender-Id: dreamhost|x-authsender|karsten@terragis.net Received: from pdx1-sub0-mail-a97.g.dreamhost.com (pop.dreamhost.com [64.90.62.162]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384) by 0.0.0.0:2500 (trex/5.18.8); Sat, 25 Jul 2020 21:50:50 +0000 X-MC-Relay: Neutral X-MailChannels-SenderId: dreamhost|x-authsender|karsten@terragis.net X-MailChannels-Auth-Id: dreamhost X-Abaft-Rock: 20db160c6b047261_1595713850707_4121475446 X-MC-Loop-Signature: 1595713850706:3672966462 X-MC-Ingress-Time: 1595713850706 Received: from pdx1-sub0-mail-a97.g.dreamhost.com (localhost [127.0.0.1]) by pdx1-sub0-mail-a97.g.dreamhost.com (Postfix) with ESMTP id E37DBB6953 for ; Sat, 25 Jul 2020 14:50:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=terragis.net; h=from:to :references:in-reply-to:subject:date:message-id:mime-version :content-type:content-transfer-encoding; s=terragis.net; bh=ayBe TG4VHAwNk4BJ+xHM5iGsr78=; b=MYaknb1/NBefUjYKAc22NXKUsLQk2BgVDAed QLE3VK5EJxM1QNUONdaJ0rPeCt7AtCNo45+yUpsn/9fd21Uo/MEq5/NLOf5Q3rnL 4im9we13D5EPqO92EiOS35je8ZJyCJ7OcI2NznTDdNWryozGKbHduMIrz3q7kQL6 jmr6QHk= Received: from terragispc (97-126-88-223.tukw.qwest.net [97.126.88.223]) (Authenticated sender: karsten@terragis.net) by pdx1-sub0-mail-a97.g.dreamhost.com (Postfix) with ESMTPA id A7587B6951 for ; Sat, 25 Jul 2020 14:50:49 -0700 (PDT) X-DH-BACKEND: pdx1-sub0-mail-a97 From: "karsten" To: References: <8B3D52FE28844B478ADD80DE30CF9F36@terragispc> <158643D58A904CC4B08308BBF26DA513@terragispc> In-Reply-To: <158643D58A904CC4B08308BBF26DA513@terragispc> Subject: RE: plphyton function - return each list value as a row ? Date: Sat, 25 Jul 2020 14:50:44 -0700 Message-ID: <85976B6A30C74713BA7E6147A1D9C880@terragispc> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-Mailer: Microsoft Office Outlook 11 Thread-Index: AdZiykwwDCFcfjvpTwivBxJoZQGoOgAAhMNAAAA7dsA= X-MimeOLE: Produced By Microsoft MimeOLE V6.1.7601.24158 X-VR-OUT-STATUS: OK X-VR-OUT-SCORE: -6 X-VR-OUT-SPAMCAUSE: gggruggvucftvghtrhhoucdtuddrgeduiedrheehgdduieejucetufdoteggodetrfdotffvucfrrhhofhhilhgvmecuggftfghnshhusghstghrihgsvgdpffftgfetoffjqffuvfenuceurghilhhouhhtmecufedttdenucgfrhhlucfvnfffucdlqdeimdenucfjughrpefhvfhfjgfufffkgggtgffothfqsehtjeejtddvtddvnecuhfhrohhmpedfkhgrrhhsthgvnhdfuceokhgrrhhsthgvnhesthgvrhhrrghgihhsrdhnvghtqeenucggtffrrghtthgvrhhnpeetgfekfeduvdffgeeiueevhfevtdelueduteekgfeigeekkefgffekgeevteffheenucffohhmrghinhepuhhsghhsrdhgohhvnecukfhppeeljedruddviedrkeekrddvvdefnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmohguvgepshhmthhppdhhvghlohepthgvrhhrrghgihhsphgtpdhinhgvthepleejrdduvdeirdekkedrvddvfedprhgvthhurhhnqdhprghthhepfdhkrghrshhtvghnfdcuoehkrghrshhtvghnsehtvghrrhgrghhishdrnhgvtheqpdhmrghilhhfrhhomhepkhgrrhhsthgvnhesthgvrhhrrghgihhsrdhnvghtpdhnrhgtphhtthhopehpghhsqhhlqdhgvghnvghrrghlsehlihhsthhsrdhpohhsthhgrhgvshhqlhdrohhrgh List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk Answering my own question I got it to work by a tiny change add SETOF for the return definition: Cheers Karsten ... RETURNS SETOF equake_values AS $$ ... -----Original Message----- From: karsten [mailto:karsten@terragis.net] Sent: Saturday, July 25, 2020 14:42 To: pgsql-general@lists.postgresql.org Subject: plphyton function - return each list value as a row ? Hi All, I am trying to create my first plphyton function ( retrieving earthquake data from an API) . Overall I was able to get one single row to be returned, but am struggling how to return the entire list I have as multiple rows - see below. Currently I get the following error when running the GetEartquakeAll function: select GetEartquakeAll('2020-01-01' ,'2020-03-01', -120, 40,200, 1.7) gives me ERROR: length of returned sequence did not match number of columns in row How can I 'simply' return each list value as a row ? Thanks Karsten Vennemann CREATE OR REPLACE FUNCTION GetEartquakeAll(start date ,stop date, lon float, lat float,radius int, minmagnitude float) RETURNS equake_values AS $$ import urllib2 import json as json data = urllib2.urlopen('https://earthquake.usgs.gov/fdsnws/event/1/query?format=geo json&starttime=%s&endtime=%s&latitude=%s&longitude=%s&maxradiuskm=%s&minmagn itude=%s&orderby=magnitude' % (start,stop,lat,lon,radius,minmagnitude)) js_data = json.load(data) equake = js_data equakearray = [] a = 0 for i in equake['features']: equakeplace = i['properties']['place'] # tile for earthquake location magnitude = i['properties']['mag'] qlong = i['geometry']['coordinates'][0] qlat = i['geometry']['coordinates'][1] equakevalue = {"place": equakeplace, "magnitude": magnitude , "qlong": qlong, "qlat": qlat} equakearray.append(equakevalue) a = a+1 return equakearray $$ LANGUAGE plpythonu; # create custom data type that is returned from equake data API query CREATE TYPE equake_values AS ( place text, magnitude float, qlong float, qlat float );