from logging.config import dictConfig import os import yaml config = { 'alembic': { 'script_location': 'migrations', 'sqlalchemy.url': ''}, 'databases': { 'meta': {}, 'raw': {}}, 'logging': { 'formatters': { 'simpleFormatter': { 'format': '%(asctime)s - %(name)s - %(levelname)s - %(message)s'}}, 'handlers': { 'consoleHandler': { 'class': 'logging.StreamHandler', 'formatter': 'simpleFormatter', 'level': 'DEBUG', 'stream': 'ext://sys.stdout'}, 'fileHandler': { 'class': 'logging.FileHandler', 'filename': 'pyjeeves.log', 'formatter': 'simpleFormatter', 'level': 'INFO'}}, 'loggers': { 'PyJeeves': {'handlers': ['fileHandler'], 'level': 'DEBUG'}, 'alembic': {'handlers': ['fileHandler'], 'level': 'INFO'}, 'sqlalchemy': {'handlers': ['fileHandler'], 'level': 'WARN', 'qualname': 'sqlalchemy.engine'}}, 'root': {'handlers': ['consoleHandler'], 'level': 'DEBUG'}, 'version': 1}, 'sync_interval': 60} config['debug'] = os.getenv('ENVIRONEMENT') == 'DEV' DB_CONTAINER = os.getenv('APPLICATION_DB_CONTAINER', 'db') config['databases']['raw'] = { 'user': os.getenv('JEEVES_USER', 'jvsdbo'), 'pw': os.getenv('JEEVES_PW', ''), 'host': os.getenv('JEEVES_HOST', ''), 'port': os.getenv('JEEVES_PORT', 1433), 'db': os.getenv('JEEVES_DB', ''), } config['databases']['meta'] = { 'user': os.getenv('META_MYSQL_USER', 'pyjeeves'), 'pw': os.getenv('META_MYSQL_PW', ''), 'host': os.getenv('META_MYSQL_HOST', DB_CONTAINER), 'port': os.getenv('META_MYSQL_PORT', 3306), 'db': os.getenv('META_MYSQL_DB', 'pyjeeves'), } # DB_URI = 'postgresql://%(user)s:%(pw)s@%(host)s:%(port)s/%(db)s' % POSTGRES config['alembic']['sqlalchemy.url'] = ( 'mysql+pymysql://%(user)s:%(pw)s@%(host)s:%(port)s/%(db)s?charset=utf8mb4' % config['databases']['meta']) try: with open("config.yml", 'r') as ymlfile: file_config = yaml.load(ymlfile, Loader=yaml.FullLoader) config = {**config, **file_config} # Syntax introduced in Python 3.5 except IOError as e: pass dictConfig(config['logging'])