Source code for msdss_base_database.env
from msdss_base_dotenv import DotEnv
from .defaults import *
[docs]class DatabaseDotEnv(DotEnv):
"""
Class to manage database environment variables.
* Extends :class:`msdss_base_dotenv:msdss_base_dotenv.core.DotEnv`
Parameters
----------
env_file : str
The path of the file with environmental variables.
key_path : str
The path of the key file for the ``env_file``.
defaults : dict
Default values for below parameters if they are not set:
.. jupyter-execute::
:hide-code:
from msdss_base_database.defaults import DEFAULT_DOTENV_KWARGS
defaults = DEFAULT_DOTENV_KWARGS['defaults']
print('<parameter> = <default>\\n')
for k, v in defaults.items():
print(k + ' = ' + v)
driver : str
The environmental variable name for ``driver``.
user : str
The environmental variable name for ``user``.
password : str
The environmental variable name for ``password``.
host : str
The environmental variable name for ``key``.
port : str
The environmental variable name for ``port``.
database : str
The environmental variable name for ``database``.
Author
------
Richard Wen <rrwen.dev@gmail.com>
Example
-------
.. jupyter-execute::
from msdss_base_database.env import DatabaseDotEnv
# Create the default database env
env = DatabaseDotEnv(env_file='./.env', key_path='./.env.key')
# Save default database env
env.save()
# Load default database env
env.load()
# See defaults
print('default_env:\\n')
for k, name in env.mappings.items():
value = str(env.get(k))
print(f'{name}: {value}')
# Remove all env files
env.clear()
# Create database env with diff host, port, and database var names
# Also set diff defaults
new_env = DatabaseDotEnv(
host='MSDSS_DATABASE_HOST_B',
port='MSDSS_DATABASE_PORT_B',
database='MSDSS_DATABASE_DATABASE_B',
defaults = dict(
host='localhost',
database='msdss2'
)
)
# Set MSDSS_DATABASE_PORT_B
new_env.set('port', '5432')
# Set MSDSS_DATABASE_HOST_B, but delete it afterwards
new_env.set('host', 'invalid-host')
new_env.delete('host')
# Check if MSDSS_DATABASE_HOST_B is set
host_is_set = new_env.is_set('host')
# See new env
print('\\nnew_env:\\n')
for k, name in new_env.mappings.items():
value = str(new_env.get(k))
print(f'{name}: {value}')
print('host_is_set: ' + str(host_is_set))
# Save new env in a file
new_env.save()
# Load the new env
new_env.load()
# Remove the new env files
new_env.clear()
"""
def __init__(
self,
driver=DEFAULT_DOTENV_KWARGS['driver'],
user=DEFAULT_DOTENV_KWARGS['user'],
password=DEFAULT_DOTENV_KWARGS['password'],
host=DEFAULT_DOTENV_KWARGS['host'],
port=DEFAULT_DOTENV_KWARGS['port'],
database=DEFAULT_DOTENV_KWARGS['database'],
env_file=DEFAULT_DOTENV_KWARGS['env_file'],
key_path=DEFAULT_DOTENV_KWARGS['key_path'],
defaults=DEFAULT_DOTENV_KWARGS['defaults']):
kwargs = locals()
del kwargs['self']
del kwargs['__class__']
super().__init__(**kwargs)