When passing in ORM-instrumented descriptors such as a column, each result is a named tuple, even for just one column. You could use the column name in a list comprehension to ‘flatten’ the list (you can drop the .all()
call, iteration retrieves the objects too):
result = [r.id for r in session.query(MyModel.id)]
or use the fact that it’s a tuple when looping a for
loop and unpack it to a single-element tuple of targets:
result = session.query(MyModel.id)
for id, in result:
# do something with the id
The latter could also be used in a list comprehension:
[id for id, in session.query(MyModel.id)]
You don’t really have any options to force the row results to be just the single id
value.