|
@@ -307,6 +307,23 @@ class HomeServer(object):
|
|
|
**self.db_config.get("args", {})
|
|
|
)
|
|
|
|
|
|
+ def get_db_conn(self, run_new_connection=True):
|
|
|
+ """Makes a new connection to the database, skipping the db pool
|
|
|
+
|
|
|
+ Returns:
|
|
|
+ Connection: a connection object implementing the PEP-249 spec
|
|
|
+ """
|
|
|
+ # Any param beginning with cp_ is a parameter for adbapi, and should
|
|
|
+ # not be passed to the database engine.
|
|
|
+ db_params = {
|
|
|
+ k: v for k, v in self.db_config.get("args", {}).items()
|
|
|
+ if not k.startswith("cp_")
|
|
|
+ }
|
|
|
+ db_conn = self.database_engine.module.connect(**db_params)
|
|
|
+ if run_new_connection:
|
|
|
+ self.database_engine.on_new_connection(db_conn)
|
|
|
+ return db_conn
|
|
|
+
|
|
|
def build_media_repository_resource(self):
|
|
|
# build the media repo resource. This indirects through the HomeServer
|
|
|
# to ensure that we only have a single instance of
|