SQLALCHEMY:执行批量SELECT语句

时间:2019-01-14 14:10:51

标签: python sqlalchemy flask-sqlalchemy

不幸的是,我试图使用sqlalchemy将一堆选择语句发送到单个数据库,但是我的方法没有成功。我所有的查询也都适合查看索引列。我筛选条件的不同组合列表。这是我目前的方法

condition1 = [1,2,3,4,5,6,7,8,9]
condition2 = [1,2,3,4,5,6,7,8,9]

queries_collection = []

for condition_value1 in condition1:

    for condition_value2  in condition2:

        condition = and_(
                        DataModel.column1 == int(condition_value1),
                        DataModel.column2 ==  int(condition_value2))

        queries_collection.append(

           self.db.session.query(DataModel).filter(condition)

        )


self.db.session.add_all(queries_collection)
result = self.db.session.execute()

下面是如何使用https://github.com/sqlalchemy/sqlalchemy/wiki/FilteredQuery

处的add_all()示例的示例

通常,我可以先创建所有查询然后批量执行吗?

我想念什么?

2 个答案:

答案 0 :(得分:1)

进行一个查询而不是查询列表

query = db.session.query(DataModel)

for condition_value1 in condition1:

    for condition_value2  in condition2:

        condition = and_(
                    DataModel.column1 == int(condition_value1[0]),
                    DataModel.column2 ==  int(condition_value2[0])

        )

    query = query.filter(condition)

result = query.all()

答案 1 :(得分:1)

只是

result = self.db.session.query(DataModel).\
    filter(DataModel.column1.in_(condition1),
           DataModel.column2.in_(condition2)).\
    all()

如果您正在寻找条件1和2的组合(产品)。

Session.add_all()用于向会话添加(transient)个模型对象的列表。