Flask-SQLAlchemy如何在不运行查询的情况下存储查询?

时间:2018-10-08 15:10:52

标签: python flask sqlalchemy flask-sqlalchemy

所以我想出了这样的东西:

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 :(得分:0)

在寻找方法重现switch语句的堆栈溢出时,我遇到了一个解决方案,该解决方案的字典使用lambda函数作为值,所以我想到了:

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')

也许这不是最好的解决方案,但是它可以完成工作,所以我将其留在这里,也许其他人会发现它很有用,并节省了一些代码行。