Как отобразить данные в таблице с помощью Tkinter. Часть 3

Здравствуйте! В предыдущих статьях мы рассмотрели два варианта отображения таблиц в Tkinter. Напомним что первый вариант — это виджет Entry из самой библиотеки в сочетании с циклом for,
а второй вариант предполагает использование сторонней библиотеки tksheet. Сегодняшняя статья будет посвящена тому, как отобразить данные SQLite в таблице Tkinter.
Итак, таблица Tkinter может служить интерфейсом для данных, находящихся в постоянном хранилище, например в базе данных SQLite. В этом случае оператор SQL обычно используется для выбора
всех или некоторых данных в одной или нескольких таблицах базы данных для отображения в таблице. Например:

Оператор SQL, который выбирает все данные из таблицы:


SELECT * from <database_table_name>

Обратите внимание, что данные, отображаемые в таблице Tkinter, не являются постоянными, но оператор запроса автоматически сохраняется в базе данных для использования в будущем.
В этом примере таблица Tkinter используется в качестве интерфейса для отображения данных в таблице базы данных SQLite:

from tkinter import ttk

import tkinter as tk

import sqlite3

def connect():

    con1 = sqlite3.connect("<path/database_name>")

    cur1 = con1.cursor()

    cur1.execute("CREATE TABLE IF NOT EXISTS table1(id INTEGER PRIMARY KEY, First TEXT, Surname TEXT)")

    con1.commit()

    con1.close()

def View():

    con1 = sqlite3.connect("<path/database_name>")

    cur1 = con1.cursor()

    cur1.execute("SELECT * FROM <table_name>")

    rows = cur1.fetchall()    

    for row in rows:

        print(row) 

        tree.insert("", tk.END, values=row)        

    con1.close()

# подключение к базе данных 

connect() 

# инициализация Tkinter

root = tk.Tk()

tree = ttk.Treeview(root, column=("c1", "c2", "c3"), show='headings')

tree.column("#1", anchor=tk.CENTER)

tree.heading("#1", text="ID")

tree.column("#2", anchor=tk.CENTER)

tree.heading("#2", text="FNAME")

tree.column("#3", anchor=tk.CENTER)

tree.heading("#3", text="LNAME")

tree.pack()

button1 = tk.Button(text="Показать данные", command=View)

button1.pack(pady=10)

root.mainloop()

Далее можнопросто создать пустой файл с расширением example.sqlite. Название и путь к базе прописываем в строке con1 = sqlite3.connect(«»).
Так же и название таблицы прописываем в строке cur1.execute(«SELECT * FROM «). Название таблицы здесь table1.
Таким образом можно вывести в окно графического интерфейса созданную нами же базу данных.

Источник