From efd47419a04944d3d93560ec09fa8cb12e435729 Mon Sep 17 00:00:00 2001 From: Helmut Merz Date: Tue, 11 Feb 2025 11:31:56 +0100 Subject: [PATCH] allow additional db parameters when setting up storage --- scopes/storage/common.py | 9 ++++++--- scopes/storage/db/postgres.py | 6 ++++++ 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/scopes/storage/common.py b/scopes/storage/common.py index 88a1818..897ecc0 100644 --- a/scopes/storage/common.py +++ b/scopes/storage/common.py @@ -69,9 +69,13 @@ class StorageFactory(object): return self.engine.connect @staticmethod - def getEngine(dbtype, dbname, user, pw, host='localhost', port=5432, **kw): + def getEngine(dbtype, dbname, user, pw, **kw): return create_engine('%s:///%s' % (dbtype, dbname), **kw) + def engineFromConfig(self, config): + return self.getEngine(config.dbengine, config.dbname, + config.dbuser, config.dbpassword) + @staticmethod def mark_changed(session): pass @@ -86,8 +90,7 @@ class StorageFactory(object): storageClass = Storage def __init__(self, config, storageClass=None): - self.engine = self.getEngine(config.dbengine, config.dbname, - config.dbuser, config.dbpassword) + self.engine = self.engineFromConfig(config) self.Session = self.sessionFactory() if storageClass is not None: self.storageClass = storageClass diff --git a/scopes/storage/db/postgres.py b/scopes/storage/db/postgres.py index ccc835a..c7a557f 100644 --- a/scopes/storage/db/postgres.py +++ b/scopes/storage/db/postgres.py @@ -24,6 +24,12 @@ class StorageFactory(StorageFactory): return create_engine('%s://%s:%s@%s:%s/%s' % ( dbtype, user, pw, host, port, dbname), **kw) + def engineFromConfig(self, config): + return self.getEngine(config.dbengine, config.dbname, + config.dbuser, config.dbpassword, + host=getattr(config, 'dbhost', 'localhost'), + port=getattr(config, 'dbport', 5432)) + @staticmethod def mark_changed(session): return mark_changed(session)