summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSylvain <syt@logilab.fr>2007-10-11 17:40:56 +0200
committerSylvain <syt@logilab.fr>2007-10-11 17:40:56 +0200
commit5b99e7b0b2c3caba7c3dfb36969df11d57669c29 (patch)
treeff79a3f447db67cc5b25e77cfb25d06d73d071b8
parent7f733cb7c9d268982563c06331d40b13f64644aa (diff)
downloadlogilab-common-5b99e7b0b2c3caba7c3dfb36969df11d57669c29.tar.gz
%s support
-rw-r--r--db.py18
1 files changed, 12 insertions, 6 deletions
diff --git a/db.py b/db.py
index 15273ec..bfd508f 100644
--- a/db.py
+++ b/db.py
@@ -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):