env

DatabaseDotEnv

class msdss_base_database.env.DatabaseDotEnv(driver='MSDSS_DATABASE_DRIVER', user='MSDSS_DATABASE_USER', password='MSDSS_DATABASE_PASSWORD', host='MSDSS_DATABASE_HOST', port='MSDSS_DATABASE_PORT', database='MSDSS_DATABASE_NAME', env_file='./.env', key_path=None, defaults={'database': 'msdss', 'driver': 'postgresql', 'host': 'localhost', 'password': 'msdss123', 'port': '5432', 'user': 'msdss'})[source]

Class to manage database environment variables.

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:

    <parameter> = <default>
    
    driver = postgresql
    user = msdss
    password = msdss123
    host = localhost
    port = 5432
    database = msdss
    

  • 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

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()
default_env:

MSDSS_DATABASE_DRIVER: postgresql
MSDSS_DATABASE_USER: msdss
MSDSS_DATABASE_PASSWORD: msdss123
MSDSS_DATABASE_HOST: localhost
MSDSS_DATABASE_PORT: 5432
MSDSS_DATABASE_NAME: msdss

new_env:

MSDSS_DATABASE_DRIVER: None
MSDSS_DATABASE_USER: None
MSDSS_DATABASE_PASSWORD: None
MSDSS_DATABASE_HOST_B: localhost
MSDSS_DATABASE_PORT_B: 5432
MSDSS_DATABASE_DATABASE_B: msdss2
host_is_set: False