In progress: Jeeves communication is now based on SQLAlchemy

This commit is contained in:
Marcus Lindvall 2019-04-05 16:50:38 +02:00
parent 0fdc029153
commit 28726fee01
21 changed files with 637 additions and 78 deletions

70
pyjeeves/config.py Normal file
View file

@ -0,0 +1,70 @@
from logging.config import dictConfig
import os
import yaml
defaults = {
'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}
try:
with open("config.yml", 'r') as ymlfile:
file_config = yaml.load(ymlfile, Loader=yaml.FullLoader)
config = {**defaults, **file_config} # Syntax introduced in Python 3.5
except IOError as e:
pass
dictConfig(config['logging'])
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'])