Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1gIzv5-0007E0-B8 for pgsql-sql@arkaria.postgresql.org; Sat, 03 Nov 2018 17:41:11 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1gIzv1-0004qG-5B for pgsql-sql@arkaria.postgresql.org; Sat, 03 Nov 2018 17:41:07 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1gIzv0-0004b9-OB for pgsql-sql@lists.postgresql.org; Sat, 03 Nov 2018 17:41:06 +0000 Received: from mout.kundenserver.de ([217.72.192.73]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1gIzus-0003YR-Pw for pgsql-sql@lists.postgresql.org; Sat, 03 Nov 2018 17:41:05 +0000 Received: from handel.gemmill.name ([78.141.12.8]) by mrelayeu.kundenserver.de (mreue108 [212.227.15.179]) with ESMTPSA (Nemesis) id 1MkHIV-1fq0kR1Il7-00kdT3 for ; Sat, 03 Nov 2018 18:40:54 +0100 Received: from handel.gemmill.name ([78.141.12.8]) by mrelayeu.kundenserver.de (mreue108 [212.227.15.179]) with ESMTPSA (Nemesis) id 1MkHIV-1fq0kR1Il7-00kdT3 for ; Sat, 03 Nov 2018 18:40:54 +0100 To: pgsql-sql@lists.postgresql.org From: Graeme Gemmill Subject: Passinf field name Message-ID: <12a51f95-7c81-a63d-7327-460044459007@gemmill.name> Date: Sat, 3 Nov 2018 17:40:53 +0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.2.1 MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="------------EC61D0E1EE9ECE40B06AAB59" Content-Language: en-GB X-Provags-ID: V03:K1:CQz7DrG2pO2Vs3dSFE8WZpAXdAFxoDjEfWfJYUadA1wVKKZFW5Z +SwBvyT5LHkwvtRmtJ6r5FRFrR2GZE97kFPWDB5TT4kvcJrivcmeHmJ/kX7099MjnwkYHdr eA3nhean007JSAN7D3AeKJO5Oba6hSuURl/3yJ6nJtRHP9lZL8ZJHwOhwbwdHw29wzo3ruo KSW/GWLME1G92agtWtZZw== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V01:K0:+oH37MCoCR0=:XC/voaA0CX8ilJXs4PMzG+ sP9avKIjhN3Nv67hleytQuGeuRHnDPXll5KAsf+U/Ex+SJuNumAfwS3s/0kYAaZ4EnyglLZMP a+phlsoJB5jRhAVrLyNZ/G9h3/nLp+VRepK1/In18InmegEy5nrlipBogvl19fNgJPvopgOUj dz+V/TH7gCCi26QShoV/P13uP+ntlVwt2QoVyjdj+B9W8wfWSdP1Mhi9Y7NnYiBd9PCc37xX4 04S4C+NGIISy60R3JU4Si2bxFOBEpJnIjobTebng992j0WaRgb0iFq986sp6jHyGwDM5k6Z1S QF2Nbv3QKg6UitPInNMXFcq1+19+fC0xFoTpX8aX7E+S7ceU4XiSj9oa1s5u7K+0JqWJQHaEh /X9L60mpZpCgWAoeBIdOvnV8MbpfYxiO5Zum5sIRbZXtSBqz9VtBHsgmGhr/YmbRS49NQ/G++ 3ozGYMmxkyR6OI8kVPcWUiVW3OJoQYCtVC2Uo7DNpKjAd2VLTe2ro7OZGedmna9Fmd1JrAt8q 4unxRI2ORSQni+qJ07CSMc6b3EyLm2eXqXwYnaRf8kx0IInUIG/pyuy97BE3dRjiML+fEc6Kt 5moPpUIxhxERoMo5wp11JUMfjUKEdGBIDfUst07NeeKO/cbPq/k3DCbJjpzCPWYsAbGGMICHj eyiBFM7RiGrqt6X9EJZ4MHNpeugmPYv/K21LS1+3aEuvoX755UayS2IQxmN/4N3TuBEaP/OmW nqFJy1AIIOeFUeCj List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk This is a multi-part message in MIME format. --------------EC61D0E1EE9ECE40B06AAB59 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Help please: Trying to construct a query where a field name has to be passed. Database wbdata has a field “date timestamp with timezone”. cursor.execute("SELECT * FROM wbdata ORDER BY date;") works. cursor.execute("SELECT * FROM wbdata WHERE date > %s", (starttime,)) works. I read in your FAQs that I have to use psycopg2.sql to pass a field name into the query, so to select a subset of wbdata where date is > startdate and the output is sorted by date, I tried cursor.execute( sql.SQL("SELECT * FROM wbdata ORDER BY %s WHERE date > %%s" % [sql.Identifier("date")], [starttime])) which gives me an error: TypeError: __init__() takes 2 positional arguments but 3 were given What is a correct formulation please? Thank you --------------EC61D0E1EE9ECE40B06AAB59 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: 8bit

Help please: Trying to construct a query where a field name has to be passed.

Database wbdata has a field “date timestamp with timezone”.

cursor.execute("SELECT * FROM wbdata ORDER BY date;")

works.

cursor.execute("SELECT * FROM wbdata WHERE date > %s", (starttime,))

works.

I read in your FAQs that I have to use psycopg2.sql to pass a field name into the query, so to select a subset of wbdata where date is > startdate and the output is sorted by date, I tried

cursor.execute(

sql.SQL("SELECT * FROM wbdata ORDER BY %s WHERE date > %%s" % [sql.Identifier("date")], [starttime]))


which gives me an error:

TypeError: __init__() takes 2 positional arguments but 3 were given

What is a correct formulation please?

Thank you

--------------EC61D0E1EE9ECE40B06AAB59--