Thread: Passinf field name
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
On Nov 3, 2018, at 1:40 PM, Graeme Gemmill <graeme@gemmill.name> wrote: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?