.ini file load environment variable
I was looking for a while how to manage this for mutli-databases
Here is what I did. I have two databases : logs and ohlc
According to the doc,I have setup the alembic like that
alembic init --template multidb
alembic.ini
databases = logs, ohlc[logs]sqlalchemy.url = postgresql://botcrypto:botcrypto@localhost/logs[ohlc]sqlalchemy.url = postgresql://botcrypto:botcrypto@localhost/ohlc
env.py
[...]# this is the Alembic Config object, which provides# access to the values within the .ini file in use.config = context.config# Interpret the config file for Python logging.# This line sets up loggers basically.fileConfig(config.config_file_name)logger = logging.getLogger('alembic.env')# overwrite alembic.ini db urls from the config filesettings_path = os.environ.get('SETTINGS')if settings_path: with open(settings_path) as fd: settings = conf.load(fd, context=os.environ) # loads the config.yml config.set_section_option("ohlc", "sqlalchemy.url", settings["databases"]["ohlc"]) config.set_section_option("logs", "sqlalchemy.url", settings["databases"]["logs"])else: logger.warning('Environment variable SETTINGS missing - use default alembic.ini configuration')[...]
config.yml
databases: logs: postgresql://botcrypto:botcrypto@127.0.0.1:5432/logs ohlc: postgresql://botcrypto:botcrypto@127.0.0.1:5432/ohlc
usage
SETTINGS=config.yml alembic upgrade head
Hope it can helps !