Как получить одномерный список после обращения к БД (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)

Ответы (0 шт):