def init_db(path): init = not os.path.isfile(path) if init: sqlite3.connect(path).close() database = QSqlDatabase("QSQLITE") database.setDatabaseName(path) database.open() def qt_exec(sql, *args, **kwargs): statement = sql.compile(dialect=mock.dialect) # print(statement) database.exec(str(statement)) mock = create_engine('sqlite://', strategy='mock', executor=qt_exec) if init: Base.metadata.create_all(bind=mock) assert database.driver().hasFeature(QSqlDriver.EventNotifications) for tablename in Base.metadata.tables.keys(): database.driver().subscribeToNotification(tablename) def call_callbacks(name: str): print("db changed") cb = Base.metadata.tables[name].onTableChanged if cb: cb() database.driver().notification.connect(call_callbacks) return database, mock