It happens that the statement "there is no reliable way to distinguish a
mapping from a sequence" is not true. I submit the following example.
Python 2.7.6 (default, Nov 10 2013, 19:24:18) [MSC v.1500 32 bit (Intel)]
> on win
> 32
> Type "help", "copyright", "credits" or "license" for more information.
> >>> from collections import Mapping
> >>> seq = [1, 2]
> >>> map = {'one':1, 'two':2}
> >>> params = seq
> >>> isinstance(params, Mapping)
> False
> >>> params = map
> >>> isinstance(params, Mapping)
> True
> >>>
>
The current production version of adodbapi
<http://sf.net/projects/adodbapi> does exactly what Tony proposes, if the
programmer sets the paramstye to "dynamic". Yes, it does work reliably. I
challenge anyone who claims otherwise to prove their assertion.
On Mon, Sep 16, 2013 at 4:15 AM, Dieter Maurer <[email protected]> wrote:
> Tony Locke wrote at 2013-9-13 18:54 +0100:
> > ...
> >I thought I'd give a suggestion for unified parameters. Apologies if
> >this has been suggested before, I did have a look at the archives :-)
> >
> >In DBAPI 2.0, the parameters to execute() can be a sequence or a
> >mapping. In DBAPI 3.0, the paramstyle attribute should be removed, and
> >the style determined by whether the parameters are a sequence or
> >mapping. For a sequence the 'numeric' style is expected, and for a
> >mapping the 'named' style. For example:
> >
> >execute("select * from emp where name = :1", ['horatio'])
> >
> >execute("select * from emp where name = :name", {'name': 'horatio'})
> >
> >The reason I like this solution is that if someone asked me how
> >parameters work in DBAPI, this one would be the easiest to explain!
> >
> >Any thoughts?
>
> This has been suggested and found one objection: there is no reliable
> way to distinguish a mapping from a sequence -- or put in
> different words: it is easy to define a class which supports both
> the sequence as well as the mapping protocol.
>
>
>
> --
> Dieter
> _______________________________________________
> DB-SIG maillist - [email protected]
> https://mail.python.org/mailman/listinfo/db-sig
>
_______________________________________________
DB-SIG maillist - [email protected]
https://mail.python.org/mailman/listinfo/db-sig