不幸的是,我试图使用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()示例的示例通常,我可以先创建所有查询然后批量执行吗?
我想念什么?
答案 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)个模型对象的列表。