From 08d09a40ca591aa2b0a49ad40993a787bc6d296c Mon Sep 17 00:00:00 2001 From: ramnes Date: Fri, 25 Nov 2022 11:04:57 +0100 Subject: [PATCH] Allow to override the database name when connecting This is particularly useful when you connect with an URI that you can't change (e.g. given by a cloud provider) and that doesn't specify a default database, or when you have one specified but still want to use another one. --- mongo_thingy/__init__.py | 4 ++-- tests/__init__.py | 7 +++++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/mongo_thingy/__init__.py b/mongo_thingy/__init__.py index 782fae6..b486f0b 100644 --- a/mongo_thingy/__init__.py +++ b/mongo_thingy/__init__.py @@ -107,13 +107,13 @@ def count(cls, filter=None, *args, **kwargs): return cls.count_documents(filter=filter, *args, **kwargs) @classmethod - def connect(cls, *args, client_cls=None, **kwargs): + def connect(cls, *args, client_cls=None, database_name=None, **kwargs): if not client_cls: client_cls = cls._client_cls cls._client = client_cls(*args, **kwargs) try: - cls._database = cls._client.get_database() + cls._database = cls._client.get_database(database_name) except (ConfigurationError, TypeError): cls._database = cls._client["test"] diff --git a/tests/__init__.py b/tests/__init__.py index e959a5e..5e927de 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -156,6 +156,13 @@ def test_connect_disconnect(thingy_cls, client_cls): disconnect() assert thingy_cls._client is None + connect(client_cls=client_cls, database_name="database") + assert isinstance(thingy_cls.client, client_cls) + assert thingy_cls._database.name == "database" + + disconnect() + assert thingy_cls._client is None + thingy_cls._client_cls = client_cls connect() assert isinstance(thingy_cls.client, client_cls)