Use a thread-local data to store SQLite memory database

issue2195
review153005
This commit is contained in:
Cédric Krier committed 2011-10-18 09:50:00 +02:00
1 parent 9d481e6e3c
commit e4f018c2e7
1 file changed
+7 -5
+7 -5
View File
@@ -9,6 +9,7 @@ from decimal import Decimal
import datetime
import time
import sys
import threading
_FIX_ROWCOUNT = False
try:
@@ -88,19 +89,20 @@ def replace(text, pattern, replacement):
class Database(DatabaseInterface):
_memory_database = None
_local = threading.local()
_conn = None
def __new__(cls, database_name=':memory:'):
if database_name == ':memory:' \
and cls._memory_database:
return cls._memory_database
if (database_name == ':memory:'
and hasattr(cls._local, 'memory_database')
and cls._local.memory_database):
return cls._local.memory_database
return DatabaseInterface.__new__(cls, database_name=database_name)
def __init__(self, database_name=':memory:'):
super(Database, self).__init__(database_name=database_name)
if database_name == ':memory:':
Database._memory_database = self
Database._local.memory_database = self
def connect(self):
if self.database_name == ':memory:':