From: | "Jonathan S(dot) Katz" <jonathan(dot)katz(at)excoventures(dot)com> |
---|---|
To: | Graeme Gemmill <graeme(at)gemmill(dot)name> |
Cc: | pgsql-sql(at)lists(dot)postgresql(dot)org |
Subject: | Re: Passinf field name |
Date: | 2018-11-03 17:47:17 |
Message-ID: | 3CDAB737-C9F2-4F3E-A9EB-5A06DE6F2C9F@excoventures.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
> On Nov 3, 2018, at 1:40 PM, Graeme Gemmill <graeme(at)gemmill(dot)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?
If you’re just trying to order by the “date” column, this should work fine:
cursor.execute("SELECT * FROM wbdata WHERE date > %s ORDER BY date", (starttime,))
Best,
Jonathan
From | Date | Subject | |
---|---|---|---|
Next Message | Mark Williams | 2018-11-04 19:10:31 | Regular Expressions |
Previous Message | Graeme Gemmill | 2018-11-03 17:40:53 | Passinf field name |