|
|
cbf076 |
|
|
|
cbf076 |
from db.connection import Connection
|
|
|
cbf076 |
|
|
|
cbf076 |
|
|
|
cbf076 |
class Holder:
|
|
|
cbf076 |
def __init__(self, pool, internal = None, readonly = True):
|
|
|
cbf076 |
self.pool = pool
|
|
|
cbf076 |
self.internal = internal
|
|
|
cbf076 |
self.readonly = readonly
|
|
|
cbf076 |
|
|
|
cbf076 |
def __enter__(self):
|
|
|
cbf076 |
if not self.internal:
|
|
|
cbf076 |
self.internal = self.pool.asquire(self.readonly)
|
|
|
cbf076 |
self.connection = Connection(
|
|
|
cbf076 |
self.pool,
|
|
|
cbf076 |
internal = self.internal,
|
|
|
cbf076 |
readonly = self.readonly )
|
|
|
cbf076 |
return self.connection
|
|
|
cbf076 |
|
|
|
cbf076 |
def __exit__(self, _exc_type, _exc_value, _traceback):
|
|
|
cbf076 |
self.connection.release()
|
|
|
cbf076 |
self.pool.release(self.connection.internal, self.readonly)
|