[pypy-commit] pypy py3k: merge default

bdkearns noreply at buildbot.pypy.org
Wed Mar 6 22:31:57 CET 2013


Author: Brian Kearns <bdkearns at gmail.com>
Branch: py3k
Changeset: r62143:f4c340c0fdad
Date: 2013-03-06 16:31 -0500
http://bitbucket.org/pypy/pypy/changeset/f4c340c0fdad/

Log:	merge default

diff --git a/lib_pypy/_sqlite3.py b/lib_pypy/_sqlite3.py
--- a/lib_pypy/_sqlite3.py
+++ b/lib_pypy/_sqlite3.py
@@ -804,7 +804,7 @@
         return wrapper
 
     @__check_cursor_wrap
-    def execute(self, sql, params=None):
+    def execute(self, sql, params=[]):
         self.__locked = True
         try:
             self.__description = None
@@ -1099,34 +1099,30 @@
             raise self.__con._get_exception(ret)
         self._in_use = True
 
-        if params is None:
-            if sqlite.sqlite3_bind_parameter_count(self._statement) != 0:
-                raise ProgrammingError("wrong number of arguments")
-            return
-
-        params_type = None
-        if isinstance(params, dict):
-            params_type = dict
+        num_params_needed = sqlite.sqlite3_bind_parameter_count(self._statement)
+        if not isinstance(params, dict):
+            num_params = len(params)
+            if num_params != num_params_needed:
+                raise ProgrammingError("Incorrect number of bindings supplied. "
+                                       "The current statement uses %d, and "
+                                       "there are %d supplied." %
+                                       (num_params_needed, num_params))
+            for i in range(num_params):
+                self.__set_param(i + 1, params[i])
         else:
-            params_type = list
-
-        if params_type == list:
-            if len(params) != sqlite.sqlite3_bind_parameter_count(self._statement):
-                raise ProgrammingError("wrong number of arguments")
-
-            for i in range(len(params)):
-                self.__set_param(i+1, params[i])
-        else:
-            for idx in range(1, sqlite.sqlite3_bind_parameter_count(self._statement) + 1):
-                param_name = sqlite.sqlite3_bind_parameter_name(self._statement, idx)
+            for i in range(1, num_params_needed + 1):
+                param_name = sqlite.sqlite3_bind_parameter_name(self._statement, i)
                 if param_name is None:
-                    raise ProgrammingError("need named parameters")
+                    raise ProgrammingError("Binding %d has no name, but you "
+                                           "supplied a dictionary (which has "
+                                           "only names)." % i)
                 param_name = param_name[1:].decode('utf-8')
                 try:
                     param = params[param_name]
                 except KeyError:
-                    raise ProgrammingError("missing parameter %r" % param_name)
-                self.__set_param(idx, param)
+                    raise ProgrammingError("You did not supply a value for "
+                                           "binding %d." % i)
+                self.__set_param(i, param)
 
     def _next(self, cursor):
         self.__con._check_closed()


More information about the pypy-commit mailing list