| 418 | |
| 419 | |
| 420 | def get_db(alias=DEFAULT_CONNECTION_NAME, reconnect=False): |
| 421 | if reconnect: |
| 422 | disconnect(alias) |
| 423 | |
| 424 | if alias not in _dbs: |
| 425 | conn = get_connection(alias) |
| 426 | conn_settings = _connection_settings[alias] |
| 427 | db = conn[conn_settings["name"]] |
| 428 | # Authenticate if necessary |
| 429 | if ( |
| 430 | PYMONGO_VERSION < (4,) |
| 431 | and conn_settings["username"] |
| 432 | and ( |
| 433 | conn_settings["password"] |
| 434 | or conn_settings["authentication_mechanism"] == "MONGODB-X509" |
| 435 | ) |
| 436 | and conn_settings["authmechanismproperties"] is None |
| 437 | ): |
| 438 | auth_kwargs = {"source": conn_settings["authentication_source"]} |
| 439 | if conn_settings["authentication_mechanism"] is not None: |
| 440 | auth_kwargs["mechanism"] = conn_settings["authentication_mechanism"] |
| 441 | db.authenticate( |
| 442 | conn_settings["username"], conn_settings["password"], **auth_kwargs |
| 443 | ) |
| 444 | _dbs[alias] = db |
| 445 | return _dbs[alias] |
| 446 | |
| 447 | |
| 448 | def connect(db=None, alias=DEFAULT_CONNECTION_NAME, **kwargs): |