Flask-SQLAlchemy, как хранить запросы без их запуска? - PullRequest
0 голосов
/ 08 октября 2018

Итак, я придумал что-то вроде этого:

def someFunction(carPool):
    dict = {
        'redcars': models.RedCar.query.all(),
        'bluecars': models.BlueCar.query.all(),
        'greencars': models.GreenCar.query.all()
    }
    cars = dict[carPool.lower()]

Но проблема здесь в том, что каждый раз, когда эта функция вызывается, все 3 запроса будут выполняться, а их результаты будут сохраняться в словаре.

Итак, я хочу спросить, есть ли способ сделать что-то похожее на это, но без выполнения всех запросов или без написания связки if-elses?

1 Ответ

0 голосов
/ 08 октября 2018

При поиске в Stack Overflow способов воспроизведения оператора switch я наткнулся на решение, в котором был словарь, в котором в качестве значений использовались лямбда-функции, поэтому я придумал следующее:

def someFunction(carPool):
    dict = {
        'redcars': lambda _: models.RedCar.query.all(),
        'bluecars': lambda _: models.BlueCar.query.all(),
        'greencars': lambda _: models.GreenCar.query.all()
    }
    cars = dict[carPool.lower()]('random var')

Возможно, это не таклучшее решение, но оно выполнит свою работу, поэтому я оставлю это здесь, возможно, другие найдут его полезным и сохранят некоторые строки кода.

...