Passinf field name

From: Graeme Gemmill <graeme(at)gemmill(dot)name>
To: pgsql-sql(at)lists(dot)postgresql(dot)org
Subject: Passinf field name
Date: 2018-11-03 17:40:53
Message-ID: 12a51f95-7c81-a63d-7327-460044459007@gemmill.name
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

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

Responses

Browse pgsql-sql by date

  From Date Subject
Next Message Jonathan S. Katz 2018-11-03 17:47:17 Re: Passinf field name
Previous Message Joe Conway 2018-10-16 12:36:44 Re: array problem with double quotes