Я не уверен - ли это лучший подход, но здесь - то, что я обычно делаю для получения официального набора документов с помощью DB-API 2 совместимых модуля:
cursor.execute("""SELECT foo, bar, baz, quux FROM table WHERE id = %s;""",
(interesting_record_id,))
for foo, bar, baz, quux in cursor.fetchall():
frobnicate(foo + bar, baz * quux)
метод форматирования запроса является одним из стандартов DB-API, но, оказывается, предпочтительный метод для Psycopg2; другие адаптеры DB-API могли бы предложить другую конвенцию, которая будет прекрасна.
Запись запрашивает как это, где неявный кортеж, распаковывающий, используется для работы с набором результатов, обычно было более эффективным для меня, чем попытка волноваться о соответствии именам переменной Python к именам столбцов SQL (который я обычно только использую для отбрасывания префиксов, и затем только если я работаю с подмножеством имен столбцов, таким образом, что префиксы не помогают разъяснить вещи больше), и очень лучше, чем запоминание идентификаторов числового столбца.
Этот стиль также помогает Вам избежать SELECT * FROM table...
, который является просто аварией обслуживания для чего-либо кроме самых простых таблиц и запросов.
Так, не точно ответ Вы просили, но возможно просвещали, тем не менее.
Используя Коллекторы Java
// Group employees by department
Map<Department, List<Employee>> byDept = employees.stream()
.collect(Collectors.groupingBy(Employee::getDepartment));
, где Отдел является Вашим ключом