diff options
author | Sylvain <syt@logilab.fr> | 2007-10-11 17:40:56 +0200 |
---|---|---|
committer | Sylvain <syt@logilab.fr> | 2007-10-11 17:40:56 +0200 |
commit | 5b99e7b0b2c3caba7c3dfb36969df11d57669c29 (patch) | |
tree | ff79a3f447db67cc5b25e77cfb25d06d73d071b8 | |
parent | 7f733cb7c9d268982563c06331d40b13f64644aa (diff) | |
download | logilab-common-5b99e7b0b2c3caba7c3dfb36969df11d57669c29.tar.gz |
%s support
-rw-r--r-- | db.py | 18 |
1 files changed, 12 insertions, 6 deletions
@@ -371,16 +371,22 @@ class _PySqlite2Adapter(DBAPIAdapter): """cursor adapting usual dict format to pysqlite named format in SQL queries """ + def _replace_parameters(self, sql, kwargs): + if isinstance(kwargs, dict): + return re.sub(r'%\(([^\)]+)\)s', r':\1', sql) + # XXX dumb + return re.sub(r'%s', r'?', sql) + def execute(self, sql, kwargs=None): - if kwargs is not None: - sql = re.sub(r'%\(([^\)]+)\)s', r':\1', sql) - self.__class__.__bases__[0].execute(self, sql, kwargs) - else: + if kwargs is None: self.__class__.__bases__[0].execute(self, sql) + else: + self.__class__.__bases__[0].execute(self, self._replace_parameters(sql, kwargs), kwargs) def executemany(self, sql, kwargss): - sql = re.sub(r'%\(([^\)]+)\)s', r':\1', sql) - self.__class__.__bases__[0].executemany(self, sql, kwargss) + if not isinstance(kwargss, (list, tuple)): + kwargss = tuple(kwargss) + self.__class__.__bases__[0].executemany(self, self._replace_parameters(sql, kwargss[0]), kwargss) class PySqlite2CnxWrapper: def __init__(self, cnx): |