Как получить одномерный список после обращения к БД (psycopg2)
Всем привет!
Подскажите как приянто получать flat list/set если нужно выбрать только 1 колонку из БД?
По дефолту DB-API всегда требует возвращать nested list, пример: ids = [(1,). (2,), (3,),].
sqlite3 вроде как умеет делать это автоматом с помощью row_factory, может быть и psycopg2 такое умеет? В доках не нашел упоминания.
Я пока распаковываю через list comprehension, но не понятно в какой момент лучше/принято распаковывать, сразу после использования fetchall или после вызова crud функции, которая под капотом вызывает fetchall?
# Crud function, var 1
def read_user_photos(id: int, cursor) -> set: # Var 1
cursor.execute('SELECT photo FROM photos WHERE id = %s', (id,))
return [photos_lst[0] for photos_lst in cursor.fetchall()]
# Some class method that uses crud, var 2
photos = [photo_lst[0] for photo_lst in read_user_photos(id, cursor)] # Var 2
do anything_with_photos(photos=photos)