Skip to content

Commit 3453bf8

Browse files
author
Jesse McLaughlin
committed
[MongoEngine#2685] support a stack of db switches
1 parent b11b652 commit 3453bf8

File tree

1 file changed

+9
-8
lines changed

1 file changed

+9
-8
lines changed

mongoengine/connection.py

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -383,23 +383,24 @@ def set_local_db_alias(local_alias, alias=DEFAULT_CONNECTION_NAME):
383383
raise DatabaseAliasError(f"db alias and local_alias cannot be empty")
384384

385385
if alias not in _local.db_alias:
386-
_local.db_alias[alias] = local_alias
387-
else:
388-
raise DatabaseAliasError(f"local db alias already set: {alias}")
386+
_local.db_alias[alias] = []
387+
388+
_local.db_alias[alias].append(local_alias)
389389

390390

391391
def del_local_db_alias(alias):
392392
if not alias:
393393
raise DatabaseAliasError(f"db alias cannot be empty")
394-
if alias in _local.db_alias:
395-
del _local.db_alias[alias]
396-
else:
394+
395+
if alias not in _local.db_alias or not _local.db_alias[alias]:
397396
raise DatabaseAliasError(f"local db alias not set: {alias}")
398397

398+
_local.db_alias[alias].pop()
399+
399400

400401
def get_db(alias=DEFAULT_CONNECTION_NAME, reconnect=False):
401-
if alias in _local.db_alias:
402-
alias = _local.db_alias[alias]
402+
if alias in _local.db_alias and _local.db_alias[alias]:
403+
alias = _local.db_alias[alias][-1]
403404

404405
if reconnect:
405406
disconnect(alias)

0 commit comments

Comments
 (0)