I was trying to send a bunch of select statements to a single database using sqlalchemy unfortunately, my approach did not succeed. All my queries are also conditioned to look into indexed columns. I filter on a list of different combinations for the conditions. Here is my current approach
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()
Following an example of how to use add_all() found here https://github.com/sqlalchemy/sqlalchemy/wiki/FilteredQuery
Generally, can I first create all queries and then execute them in bulk?
What am I missing?
Just
result = self.db.session.query(DataModel).\
    filter(DataModel.column1.in_(condition1),
           DataModel.column2.in_(condition2)).\
    all()
if you're looking for combinations (product) of conditions 1 & 2.
Session.add_all() is for adding a list of (transient) model objects to the session.
Make one query rather than a list of queries
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()
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With