Re: Passinf field name
"Jonathan S. Katz" <[email protected]> Sat, 3 Nov 2018 13:47:17 -0400
| Newsgroups | gmane.comp.db.postgresql.sql |
|---|---|
| Message-ID | <[email protected]> |
> On Nov 3, 2018, at 1:40 PM, Graeme Gemmill <[email protected]> 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
signature.asc
(application/pgp-signature, 833 B)
-----BEGIN PGP SIGNATURE----- iQIzBAEBCAAdFiEE+oS2la8r95ogZD/x8QSccp8cZScFAlvd3yUACgkQ8QSccp8c ZSdhkg/+PpdHsjO72ekw4rmQRKcYPHzfrX0lL3HvGgFb1RylewwNXwg3/Fh7VMQh KL1Qe7/7wi03Qhd5Uphpta8FjUXjHGqWAbYJKsq+9vx4gSHMMMl1X0AqClasbOUe T8qaNcCVodRD6S/iTah0kOmPNHGe920A8VE0D8fEQ4zL4x56j9Pc7j1mbnE9vOlz +cEzh7JA9+l7+P/G2Zgvhb4f5gVdk6KRH3BxExTZhy1uwXS+EnkrkRoBhv8JRwmR lKPuJitGFlBqLl/7VFlff40sOKxU+wHNwMkkcQUD9kvUl3VgPHWikS3rH917uWGx eCyl/bN1wKpWPUMzti2tdjlyxk9fI1uwY8HwrCS+Ivn5MtgZnxw6cLC0NvYDgcXA /rbCDZWBbZJp7msnyebMimH+Gk0hCBWfeYHMD0sAeBoFSpcnfV7pSc4ursFniG2m +G7ez54JzYzpvADTizd6gAlgJAXdSOfoBSLbE68WH4j8rNnC8eWqOWdQ//yVfElc XVghDqZG4eW9BOB+K5kY9LAurHxXttq0QHoD3lJgklZ8hbX6hOMQCL21rF11Ix1X nFo9w3CtPGrAJpym9zHaX/tLsoAObs09GodAGKVf2oVXpF74/ieSblFiYjmLYw8I ByvfOqycKkY4GxRhC/lBTczYbaaGA1w7VEomt7jRmyaErIW1o6w= =ewkV -----END PGP SIGNATURE-----