[pypy-commit] pypy py3.5: raise on invalid isoltion levels (sqlite3)

plan_rich pypy.commits at gmail.com
Tue Feb 21 10:54:30 EST 2017


Author: Richard Plangger <planrichi at gmail.com>
Branch: py3.5
Changeset: r90273:ef5d1489274a
Date: 2017-02-21 16:44 +0100
http://bitbucket.org/pypy/pypy/changeset/ef5d1489274a/

Log:	raise on invalid isoltion levels (sqlite3)

diff --git a/lib_pypy/_sqlite3.py b/lib_pypy/_sqlite3.py
--- a/lib_pypy/_sqlite3.py
+++ b/lib_pypy/_sqlite3.py
@@ -190,6 +190,12 @@
                 self.cache[sql] = stat
         return stat
 
+BEGIN_STATMENTS = (
+    "BEGIN ",
+    "BEGIN DEFERRED",
+    "BEGIN IMMEDIATE",
+    "BEGIN EXCLUSIVE",
+)
 
 class Connection(object):
     __initialized = False
@@ -691,7 +697,13 @@
         if val is None:
             self.commit()
         else:
-            self.__begin_statement = str("BEGIN " + val).encode('utf-8')
+            if not isinstance(val, str):
+                raise TypeError("isolation level must be " \
+                        "a string or None, not %s" % type(val).__name__)
+            stmt = str("BEGIN " + val).upper()
+            if stmt not in BEGIN_STATMENTS:
+                raise ValueError("invalid value for isolation_level")
+            self.__begin_statement = stmt.encode('utf-8')
         self._isolation_level = val
     isolation_level = property(__get_isolation_level, __set_isolation_level)
 


More information about the pypy-commit mailing list