Если ваш код не использует sqlalchemy и вы не хотите выполнять тяжелую работу по переопределению кода по разным причинам, вы можете заключить код доступа к базе данных в класс и присоединить его к экземпляру приложения фляги.
app.db = DBAccessClass()
Затем через код, который вы вызываете в экземпляре, прикрепленном к приложению с колбой.Это не решит вашу проблему с помощью нескольких обращений к БД для одних и тех же данных, которые могут быть кэшированы.
Затем вы можете использовать класс аннотаций, который бы реализовывал стратегию кэширования для вашего DBAccessClass, вот очень простой пример:
from functools import wraps, update_wrapper
class cache(object):
def __init__(self):
self.named_caches = {}
def __call__(self, f):
@wraps(f)
def decorated(*args, **kwargs):
key = f.__name__
if key not in self.named_caches:
self.named_caches[key] = f(*args, **kwargs)
return self.named_caches[key]
return update_wrapper(decorated, f)
cached = cache()
class MyDBAccessClass(object):
@cached
def get_some_data(self):
data = query_db()
return data
Это может быть краткосрочное решение, настоятельно рекомендуем рассмотреть sQLAlchemy.