Source code for msdss_base_database.tools

import sqlalchemy

from .defaults import *
from .env import DatabaseDotEnv


[docs]def get_database_url( driver=DEFAULT_DOTENV_KWARGS['defaults']['driver'], user=DEFAULT_DOTENV_KWARGS['defaults']['user'], password=DEFAULT_DOTENV_KWARGS['defaults']['password'], host=DEFAULT_DOTENV_KWARGS['defaults']['host'], port=DEFAULT_DOTENV_KWARGS['defaults']['port'], database=DEFAULT_DOTENV_KWARGS['defaults']['database'], load_env=False, env=DatabaseDotEnv(), *args, **kwargs): """ Form database connection url from parameters or an environmental variables file. Parameters ---------- driver : str The driver name of the database connection, which are commonly ``postgresql``, ``sqlite``, ``mysql``, ``oracle`` or ``mssql`` (see `SQLAlchemy supported databases <https://docs.sqlalchemy.org/en/14/core/engines.html#supported-databases>`_). user : str User name for the connection. password : str Password for the user. host : str Host address of the connection. port : str Port number of the connection. database : str Database name of the connection. load_env : bool Whether to load the environmental variables using parameter ``env`` or not. The environment will only be loaded if the ``env_file`` exists. env : :class:`msdss_base_database.env.DatabaseDotEnv` An object to set environment variables related to database configuration. These environment variables will overwrite the parameters above if they exist. By default, the parameters above are assigned to each of the environment variables below: .. jupyter-execute:: :hide-code: from msdss_base_database.defaults import DEFAULT_DOTENV_KWARGS defaults = {k:v for k, v in DEFAULT_DOTENV_KWARGS.items() if k not in ['defaults', 'env_file', 'key_path']} print('<parameter> = <environment variable>\\n') for k, v in defaults.items(): print(k + ' = ' + v) *args, **kwargs Additional arguments passed to :class:`sqlalchemy:sqlalchemy.engine.URL.create`. Returns ------- str String representing the database connection url. Author ------ Richard Wen <rrwen.dev@gmail.com> Example ------- .. jupyter-execute:: from msdss_base_database.tools import get_database_url url = get_database_url( driver='postgresql', user='msdss', password='msdss12', port='5432', database='msdss' ) print(url) """ # (get_database_url_env) Load env if it exists if env.exists() and load_env: env.load() driver = env.get('driver', driver) user = env.get('user', user) password = env.get('password', password) host = env.get('host', host) port = env.get('port', port) database = env.get('database', database) # (get_database_url_return) Get a str of the database url out = str(sqlalchemy.engine.URL.create(drivername=driver, username=user, password=password, host=host, port=port, database=database, *args, **kwargs)) return out