For more information, see http://adodbapi.sourceforge.net

Tests were run against various combinations of:
[Python2.5, Python2.7, Python3.3, Python3.4, IronPython2.7]
[32-bit, 64-bit]  [local, remote]
[Access database, SQL Server, PostgreSQL, MySQL]

This release adds prepared query support using the api we have discussed
recently on this forum:
>>> crsr = conn.cursor()
>>> crsr.prepare('select * from sometable where whatever = ?')
>>> crsr.execute(crsr.command, [param])

I have also done more experimentation and enhancement with the
user-definable paramstyle.

This version adds support for setting the paramstyle to 'pyformat', which
is implemented as a synonym of 'format'.  The 'format' SQL-mangling
subroutine now uses introspection to determine whether to use %(keyword)s
or %s positional parameters.  I believe that several of the popular api
implementations work that way.

I also wanted to try a similar feature between 'qmark' and 'named', but
without having to use introspection.  Here is how the code turned out:

def _reformat_operation(self, operation, parameters):
> ..if self.paramstyle in ('format', 'pyformat'): # convert %s to ?
> ....operation, self._parameter_names = api.changeFormatToQmark(operation)
> ..elif self.paramstyle == 'named' or (self.paramstyle == 'dynamic' and
> isinstance(parameters, Mapping)):
> ....operation, self._parameter_names = api.changeNamedToQmark(operation) #
> convert :name to ?
> ..return operation
>

I also had to import 'Mapping' and add 'dynamic' to the list of accepted
paramstyles, so the entire feature changed or added three lines of Python.

[Restriction:  There is a bug in pywin32 version 218 for Python3.4 which
causes a unittest failure. The fix should be released in a few days.]
_______________________________________________
DB-SIG maillist  -  DB-SIG@python.org
https://mail.python.org/mailman/listinfo/db-sig

Reply via email to