Pass in create_engine kwargs through database constructor

This commit is contained in:
Stefan Wehrmeyer 2014-01-31 22:03:34 +01:00
parent 6deba5937e
commit 3fd1c1185a

View File

@ -27,10 +27,14 @@ log = logging.getLogger(__name__)
class Database(object): class Database(object):
def __init__(self, url, schema=None, reflectMetadata=True): def __init__(self, url, schema=None, reflectMetadata=True,
kw = {} engine_kwargs=None):
if engine_kwargs is None:
engine_kwargs = {}
if url.startswith('postgres'): if url.startswith('postgres'):
kw['poolclass'] = NullPool engine_kwargs.setdefault('poolclass', NullPool)
self.lock = threading.RLock() self.lock = threading.RLock()
self.local = threading.local() self.local = threading.local()
if '?' in url: if '?' in url:
@ -44,7 +48,7 @@ class Database(object):
if len(query): if len(query):
url = url + '?' + urlencode(query, doseq=True) url = url + '?' + urlencode(query, doseq=True)
self.schema = schema self.schema = schema
self.engine = create_engine(url, **kw) self.engine = create_engine(url, **engine_kwargs)
self.url = url self.url = url
self.metadata = MetaData(schema=schema) self.metadata = MetaData(schema=schema)
self.metadata.bind = self.engine self.metadata.bind = self.engine