From e4f018c2e749f6b673f013c68ba112d81cbef572 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Tue, 18 Oct 2011 09:50:00 +0200 Subject: [PATCH] Use a thread-local data to store SQLite memory database issue2195 review153005 --- trytond/backend/sqlite/database.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/trytond/backend/sqlite/database.py b/trytond/backend/sqlite/database.py index bc719c6c51..d01d7dd961 100644 --- a/trytond/backend/sqlite/database.py +++ b/trytond/backend/sqlite/database.py @@ -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:':