Re: API 3.0 limiting paramstyle to ['named', 'qmark'] is okay. ('format' is not desirable)

"Vernon D. Cole" <[email protected]>
Newsgroups gmane.comp.python.db
Message-ID <CAH-ZgAf58o+429hcYwAO+uwWq3o9FQHrVcYKcHvc9u=A5gJgog@mail.gmail.com>
On Fri, May 17, 2013 at 6:00 PM, M.-A. Lemburg <[email protected]> wrote:

> > IMHO it is explicit, whether you say:
> >
> > cursor.execute(stmt, { < dictionary>} )
> >
> > vs.
> >
> > cursor.execute(stmt, [ <list>] )
> >
> > the type of parameters passed indicates the style of params to search
> for.   It's explicit via type inference.    if a dictionary is passed, "?"
> symbols are left alone.  If a list is passed, ":param" symbols are left
> alone.  If neither is passed, then neither ? nor :param are searched for.
>
> Hmm, then how do you tell whether this code is correct or not ? :-)
>
> cursor.execute('select * from mytable where id=?', parameters)
>
> Type inference also doesn't help universally, since objects can
> easily implement both the sequence and mapping ABC.


I don't need to "tell whether the code is correct".  I am not writing a
compiler -- just acting on what my user tells me to do.  This happens at
run time, so I will know at that moment whether the parameters passed to me
have keys or not.  If there are keys, I will run my "named-to-qmark"
converter.  If not, I will hand off the command as is (since my target
engine expects qmark).  There is no guess work here. Try for a key (and use
'named').  No key? Use the sequence (and use qmark). No sequence? Send the
command as is.

If the SQL engine complains about the result, tell the user.

_______________________________________________
DB-SIG maillist  -  [email protected]
http://mail.python.org/mailman/listinfo/db-sig
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.