Обсуждение: I wish I could pass bound variables as a dictionary not a list

Поиск
Список
Период
Сортировка

I wish I could pass bound variables as a dictionary not a list

От
"W. Matthew Wilson"
Дата:
Every once in a while, I have to write a big gnarly query like

cursor.execute("""
    select *
    from table1
    where (%s) > 99
    and ...
   """,

    [a, a, b, b, c, c, a, a, b])

The point being that I have to repeat lots of parameters because I use
them in several where-clauses.

It would make these queries vastly easier to read and debug if I could
pass in bound variables as a dictionary, rather than as a tuple.

Is this possible?

Matt



--
W. Matthew Wilson
matt@tplus1.com
http://tplus1.com

Re: I wish I could pass bound variables as a dictionary not a list

От
Adrian Klaver
Дата:
On Tuesday, July 19, 2011 5:24:06 pm W. Matthew Wilson wrote:
> Every once in a while, I have to write a big gnarly query like
>
> cursor.execute("""
>     select *
>     from table1
>     where (%s) > 99
>     and ...
>    """,
>
>     [a, a, b, b, c, c, a, a, b])
>
> The point being that I have to repeat lots of parameters because I use
> them in several where-clauses.
>
> It would make these queries vastly easier to read and debug if I could
> pass in bound variables as a dictionary, rather than as a tuple.
>
> Is this possible?

Yes
See here:
http://www.initd.org/psycopg/docs/usage.html#query-parameters

>
> Matt

--
Adrian Klaver
adrian.klaver@gmail.com