Author: Brian Kearns <[email protected]>
Branch:
Changeset: r62114:e052d7b7f0cd
Date: 2013-03-05 23:10 -0500
http://bitbucket.org/pypy/pypy/changeset/e052d7b7f0cd/
Log: have _sqlite3 cache begin statement
diff --git a/lib_pypy/_sqlite3.py b/lib_pypy/_sqlite3.py
--- a/lib_pypy/_sqlite3.py
+++ b/lib_pypy/_sqlite3.py
@@ -310,6 +310,7 @@
def __init__(self, database, timeout=5.0, detect_types=0,
isolation_level="",
check_same_thread=True, factory=None, cached_statements=100):
+ self.__initialized = True
self._db = c_void_p()
if sqlite.sqlite3_open(database, byref(self._db)) != SQLITE_OK:
raise OperationalError("Could not open database")
@@ -321,15 +322,14 @@
self.text_factory = unicode_text_factory
self._detect_types = detect_types
- self._isolation_level = isolation_level
self._in_transaction = False
+ self.isolation_level = isolation_level
self._cursors = []
self.__statements = []
self.__statement_counter = 0
self._statement_cache = StatementCache(self, cached_statements)
- self.__initialized = True
self.__func_cache = {}
self.__aggregates = {}
self.__aggregate_instances = {}
@@ -470,10 +470,10 @@
return _iterdump(self)
def _begin(self):
- sql = "BEGIN " + self._isolation_level
statement = c_void_p()
next_char = c_char_p()
- ret = sqlite.sqlite3_prepare_v2(self._db, sql, -1, byref(statement),
next_char)
+ ret = sqlite.sqlite3_prepare_v2(self._db, self.__begin_statement, -1,
+ byref(statement), next_char)
try:
if ret != SQLITE_OK:
raise self._get_exception(ret)
@@ -495,10 +495,10 @@
if obj is not None:
obj.reset()
- sql = "COMMIT"
statement = c_void_p()
next_char = c_char_p()
- ret = sqlite.sqlite3_prepare_v2(self._db, sql, -1, byref(statement),
next_char)
+ ret = sqlite.sqlite3_prepare_v2(self._db, "COMMIT", -1,
+ byref(statement), next_char)
try:
if ret != SQLITE_OK:
raise self._get_exception(ret)
@@ -525,10 +525,10 @@
if cursor:
cursor.reset = True
- sql = "ROLLBACK"
statement = c_void_p()
next_char = c_char_p()
- ret = sqlite.sqlite3_prepare_v2(self._db, sql, -1, byref(statement),
next_char)
+ ret = sqlite.sqlite3_prepare_v2(self._db, "ROLLBACK", -1,
+ byref(statement), next_char)
try:
if ret != SQLITE_OK:
raise self._get_exception(ret)
@@ -722,8 +722,10 @@
def __set_isolation_level(self, val):
if val is None:
self.commit()
- if isinstance(val, unicode):
- val = str(val)
+ else:
+ if isinstance(val, unicode):
+ val = str(val)
+ self.__begin_statement = 'BEGIN ' + val
self._isolation_level = val
isolation_level = property(__get_isolation_level, __set_isolation_level)
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit