Вывод базы данных PostgreSQL в Treeview tkinter. Поиск аналогии row_factory sqlite3 в PostgreSQL + psycopg2

Вопрос у меня состоит в следующем: существовал проект с базой данных реализованной на sqlite3 и интерфейсом на tkinter с выводом базы данных в интерфейс через Treeview. В последствии база была заменена на PostgreSQL, соответственно вывод данных сломался, так как в sqlite3 данные получали в виде объекта через:

row_factory = sqlite3.Row

И впоследствии к ним обращались по именам таблицы:

i['id'] # и т.д. ...

Возможно-ли сохранить тот же принцип работы в базе PostgreSQL через библиотеку psycopg2? Пример функций из sqlite3:

def get_data():
    all_data = []
    with sqlite3.connect('db/database.db') as db:
        db.row_factory = sqlite3.Row
        cursor = db.cursor() 
        query = """ SELECT * FROM Table_name """
        cursor.execute(query) 
        all_data = cursor
    return all_data

def get_table_data():
    data = get_data() 
    return [(i['id'], i['name'], i['city']) for i in data]

Далее все данные уходили в вывод дисплея:

import helper as eh # helper - это файл где как раз хранятся функции по работе с БД



heads = ['id', 'name', 'city']
style = ttk.Style(window) 
style.configure(Treeview, row height=40) 
table=ttk.Treeview(block_name, show='headings', selectmode='browse') 
table['columns'] = heads
for header in heads:
    table.heading(header, text=header, anchor='center') 
    table.column(header, anchor='center') # опускаю декоративные выставления размеров и т.д.
for row in eh.get_table_data():
    table.insert('', tk.END, values=row) 

Новая функция получения данных из PostgreSQL:

def get_data():
    all_data = []
    with psycopg2.connect(dbname="dbname", user="user", password="password", host="host") as conn:
        with conn.cursor() as cursor:
            cursor.execute(""" SELECT * FROM schema_name."Table_name" ; """) 
            rows = cursor.fetchall() 
            all_data = rows
    return all_data

Ну и разумеется, что данный результат новой функции не впишется в get_table_data так как мы получим кортежи. Из данного сочинения и вытекает вопрос есть ли аналог row_factory в psycopg2, чтобы была фозможность обращаться к столбцам по имени и выводить результат так же в строковом типе, либо может есть способ как выводить результат PostgreSQL в Treeview? Заранее спасибо, может просто туплю и тут всё просто будет (тогда камнями не кидайтесь).


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

Автор решения: Ffff

Нашёл такое решение:

def get_table_data():
    data = get_data() 
    result = []
    for i in data:
        result.append(" ".join(map(str, i)))
    return result

Не самое идеальное, так как обращение идёт не к столбцам, а следствие - косячный вывод даты и времени может быть.

→ Ссылка