Вставка в базу данных из метки ввода нажатием кнопки Tkinter / sqlite - PullRequest
0 голосов
/ 12 января 2019

Вот мой ярлык и поле ввода в Tkinter (только для имени клиента, похоже на другие входные данные). Моя цель - ввести какое-то слово в это поле ввода и затем вставить его в базу данных, нажав кнопку «Сохранить».

conn = sqlite3.connect('my_database.db')
cur = conn.cursor()
CustomerName = StringVar()

lblName = Label(bottomLeftTopL, font = ('arial', 16, 'bold'), text = "Name", fg 
= 'black', width = 15, bd = 10, anchor = 'w')
lblName.grid(row = 0, column = 0)

txtName = Entry(bottomLeftTopL, font = ('arial', 16, 'bold'), bd = 2, width = 
24, bg = 'white', justify = 'left', textvariable = CustomerName)
txtName.grid(row = 0, column = 1)

Моя кнопка, которую я хочу использовать для сохранения входных данных в базе данных.

btnSave = Button(bottomLeftBottomL, pady = 8, bd = 2, 
fg = 'black', font = ('arial', 10, 'bold'), width = 10, text = "Save",
bg = 'white').grid(row = 7, column = 1)

Вот мой класс для таблицы клиента в SQLAlchemy.

class Customers(Base):
    __tablename__ = "customers"

    id_customer = Column(Integer, primary_key = True)
    name = Column(String)
    phone_number = Column(String)
    adress = Column(String)

    def __init__(self, name, phone_number, adress):
       self.name = name
       self.phone_number = phone_number
       self.adress = adress

Полагаю, мне нужно использовать курсор и оператор "Вставить в". Может ли кто-нибудь помочь мне написать функцию для этой операции?

1 Ответ

0 голосов
/ 12 января 2019

Это минимальный пример того, что вы пытаетесь достичь - вставьте значение в запись в db при нажатии кнопки. Для этого важны два основных понятия:

  1. command опция для кнопки - которая вызывает функцию при нажатии и
  2. get метод виджета ввода, который возвращает текст в виджете.
from tkinter import *
import sqlite3
root = Tk()
conn = sqlite3.connect('my_database.db')
#create a table for testing
sql_create_projects_table = """ CREATE TABLE IF NOT EXISTS my_table (
                                        name text
                                    ); """
conn.execute(sql_create_projects_table)

#function to be called when button is clicked
def savetodb():
    #txtName.get() will get the value in the entry box
    entry_name=txtName.get()
    conn.execute('insert into my_table(name) values (?)', (str(entry_name),))
    curr=conn.execute("SELECT name from my_table")
    print(curr.fetchone())

txtName = Entry(root)
txtName.pack()

#function savetodb will be called when button is clicked
btnSave = Button(root ,text = "Save",command=savetodb)
btnSave.pack()

root.mainloop()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...