Вывести базу данных в таблицу в tkinter
У меня есть код, в котором я пытаюсь вывести мою базу данных внутри таблицы окна tkinter
from tkinter import *
from tkinter import ttk
from tkinter.ttk import Treeview
from tkinter import filedialog
import tkinter as tk
#import tkinter.ttk as ttk
import pymysql.cursors
import sqlite3
#connection database 'sklad'
connection = pymysql.connect(host='localhost',
user='root',
password='almaopt',
db='sklad',
charset='utf8mb4',
cursorclass=pymysql.cursors.DictCursor)
curs = connection.cursor()
#output database on display
def populate_list (boa=''):
for i in sklad_tree_view.get_children():
sklad_tree_view.delete(i)
for row in curs.fetch (boa):
sklad_tree_view.insert('', 'end', values=row)
def populate_list2(query='select * from sklad'):
for i in sklad_tree_view.get_children():
sklad_tree_view.delete(i)
for row in curs.fetch2 (query):
sklad_tree_view.insert('', 'end', values=row)
def select_sklad(event):
try:
global selected_item
index = sklad_tree_view.selection()[0]
selected_item = sklad_tree_view.item(index)['values']
boa_entry.delete(0, END)
boa_entry.insert(END, selected_item[1])
nom_entry.delete(0, END)
nom_entry.insert(END, selected_item[2])
qua_entry.delete(0, END)
qua_entry.insert(END, selected_item[3])
price_entry.delete(0, END)
price_entry.insert(END, selected_item[4])
except IndexError:
pass
#decription desktop window
window = Tk()
window.title("Склад Альма Опт")
window.geometry ('1500x500')
#barcode value input field for search
boa_search = StringVar()
boa_search_entry = Entry(frame_search, textvariable=boa_search)
boa_search_entry.grid (row=0, column=1)
#describe buttons on tab1
btn = Button(tab1, text="Загрузить базу данных")
btn.place(x=500, y=0)
btn2 = Button(tab1, text = "Приход")
btn2.place(x=650, y=0)
btn3 = Button(tab1, text="Начать поиск", command=start_searching)
btn3.place (x=400, y=0)
frame_btn = Frame(tab1)
frame_btn.grid(row=3, column=0)
btn4 = Button (frame_btn, text='Добавить позицию')
btn4.grid(row=0, column=0, pady=20)
btn5 = Button(frame_btn, text='Изменить позицию')
btn5.grid(row=0, column=1)
btn6 = Button(frame_btn, text='Удалить позицию')
btn6.grid(row=0, column=2)
#fields needed for the database
frame_fields = Frame(tab1)
#fields boarcode
boa_text = StringVar()
boa_label = Label(frame_fields, text='Штрихкод')
boa_label.grid(row=0, column=0, sticky=E)
boa_entry = Entry(frame_fields, textvariable=boa_text)
boa_entry.grid(row=0, column=3, sticky=W)
#fields nomination
nom_text = StringVar()
nom_label = Label(frame_fields, text='Наименование')
nom_label.grid (row=0, column=2, sticky=E)
nom_entry = Entry(frame_fields, textvariable=nom_text)
nom_entry.grid(row=0, column=3, sticky=W)
#fields Quantity
qua_text = StringVar()
qua_label = Label(frame_fields, text='Количество')
qua_label.grid(row=1, column=0, sticky=E)
qua_entry = Entry(frame_fields, text=qua_text)
qua_entry.grid(row=1, column=1, sticky=W)
#fields Price
price_text = StringVar()
price_label = Label(frame_fields, text='Цена за штуку')
price_label.grid(row=1, column=2, sticky=E)
price_entry = Entry(frame_fields, textvariable=price_text)
price_entry.grid(row=1, column=3, sticky=W)
#displaying the database to the screen as a table (tree structure)
frame_sklad = Frame(tab1)
frame_sklad.grid(row=4, column=0,columnspan=4,rowspan=6, pady=20, padx=20)
columns = ['№', 'Штрихкод','Наименование','Количество','Цена за штуку']
sklad_tree_view = Treeview(frame_sklad, columns=columns, show="headings")
sklad_tree_view.column('№', width=30)
for col in columns[1:]:
sklad_tree_view.column(col, width=120)
sklad_tree_view.heading(col, text=col)
sklad_tree_view.bind('<<TreeviewSelect>>', select_sklad)
sklad_tree_view.pack(side="left", fill="y")
scr = Scrollbar(frame_sklad, orient='vertical')
scr.configure(command=sklad_tree_view.yview)
scr.pack(side="right", fill="y")
sklad_tree_view.config(yscrollcommand=scr.set)
#output of the database table (on top of other cells, with an error NOW)
# with my_conn.cursor() as cursor:
# sql = ('''SELECT * from mom LIMIT 0,10''')
# cursor.execute(sql)
# for i, mom in enumerate(cursor):
# for j, key in enumerate(mom):
# e = Entry(tab1, width=10, fg='blue')
# e.grid(row=i, column=j)
# e.insert(END, mom[key])
#grafics window output
populate_list()
window.mainloop()
но на выходе получаю ошибку
'DictCursor' object has no attribute 'fetch'
Чтобы я не пыталась сделать, всегда упираюсь в ошибку с методом fetch. Помогите, пожалуйста, как исправить