Solution
combined = db.session.query(Ingredient).filter(Ingredient.ROrder.isnot(None)).\
filter(_or(Ingredient.recipe_id==0, Ingredient.recipe_id==recipe_id)).\
order_by(Ingredient.ROrder)
combined_objects = db.session.query(Ingredient).filter(Ingredient.ROrder.isnot(None)).\
filter(_or(Ingredient.recipe_id==0, Ingredient.recipe_id==recipe_id)).\
order_by(Ingredient.ROrder).all()
data_dict = {}
source_id_list = []
for combined_object in combined_objects:
if combined_object.source_id not in data_dict.keys():
# add to dictionary
temp_dict = {'name': combined_object.name, 'Descriptor': combined_object.Descriptor,
'tv': combined_object.tv, 'ROrder': combined_object.ROrder, 'recipe_id': combined_object.recipe_id}
data_dict[combined_object.source_id] = temp_dict
# keep track of list of source_ids
source_id_list.append(combined_object.source_id)
# if key is already in dictionary, check if recipe_id==recipe_id, if it does, overwrite data in dictionary
else:
if combined_object.recipe_id == recipe_id:
# add to dictionary
temp_dict = {'name': combined_object.name, 'Descriptor': combined_object.Descriptor,
'tv': combined_object.tv, 'ROrder': combined_object.ROrder, 'recipe_id': combined_object.recipe_id}
data_dict[combined_object.source_id] = temp_dict
# show result
for source_id in source_id_list:
print(data_dict[source_id])