import json import logging import sys from pathlib import Path from flask import Flask from flask_migrate import Migrate from flask_sqlalchemy import SQLAlchemy from sqlalchemy.engine import Engine from sqlalchemy import event print('- Loading settings') with open('settings.json') as file: settings = json.load(file) app = Flask(__name__) if "unittest" in sys.modules: # creates an in-memory DB db_file = "" app.logger.setLevel(logging.CRITICAL) else: db_file = Path.cwd() / settings['database'] app.config["SQLALCHEMY_DATABASE_URI"] = f"sqlite:///{db_file}" app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False @event.listens_for(Engine, "connect") def set_sqlite_pragma(dbapi_connection, connection_record): cursor = dbapi_connection.cursor() cursor.execute("PRAGMA foreign_keys=ON") cursor.close() db = SQLAlchemy(app) migrate = Migrate(app, db)