[DB-SIG] API 3.0 limiting paramstyle to ['named', 'qmark'] is okay. ('format' is not desirable)

M.-A. Lemburg mal at egenix.com
Fri May 17 19:00:14 CEST 2013


On 17.05.2013 18:07, Michael Bayer wrote:
> 
> On May 17, 2013, at 11:36 AM, M.-A. Lemburg <mal at egenix.com> wrote:
> 
>> On 17.05.2013 17:10, Christoph Zwerschke wrote:
>>> Am 17.05.2013 17:01, schrieb Vernon D. Cole:
>>>> What other options should be considered?
>>>
>>> Another option would be to get rid of the parameter completely, and silently accept both styles,
>>> whatever is used in the sql command passed to the execute method.
>>
>> This would violate explicit is better than implicit, and it also
>> creates problems with raising proper errors, e.g. passing a
>> dictionary of parameters to a SQL command which uses a mix
>> of qmark and named style parameter markers.
>>
>> We do need to keep this explicit.
> 
> 
> 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.

-- 
Marc-Andre Lemburg
eGenix.com

Professional Python Services directly from the Source  (#1, May 17 2013)
>>> Python Projects, Consulting and Support ...   http://www.egenix.com/
>>> mxODBC.Zope/Plone.Database.Adapter ...       http://zope.egenix.com/
>>> mxODBC, mxDateTime, mxTextTools ...        http://python.egenix.com/
________________________________________________________________________
2013-05-07: Released mxODBC Zope DA 2.1.2 ...     http://egenix.com/go46
2013-05-06: Released mxODBC 3.2.3 ...             http://egenix.com/go45

::::: Try our mxODBC.Connect Python Database Interface for free ! ::::::

   eGenix.com Software, Skills and Services GmbH  Pastor-Loeh-Str.48
    D-40764 Langenfeld, Germany. CEO Dipl.-Math. Marc-Andre Lemburg
           Registered at Amtsgericht Duesseldorf: HRB 46611
               http://www.egenix.com/company/contact/


More information about the DB-SIG mailing list