Отправка данных в БД из поля GUI

131
02 октября 2019, 00:00

Подскажите, как сделать, чтобы после отправки данных, форма была снова пустой для следующей партии данных на отправку в БД.

Я создал форму для текста и кнопку. Но после отправки последнее значение отправляется постоянно. (Но мне нужно сделать что бы после отправки одного значения, снова просил ввода.)

import pymysql.cursors
import pymysqlpool
from tkinter import *
from tkinter import messagebox

connection = pymysql.connect(host='127.0.0.1',
                             user='root',
                             password='',
                             db='python',
                             charset='utf8mb4',
                             cursorclass=pymysql.cursors.DictCursor,
                             autocommit=True)

def display_full_name():
    # Подключение к БД
    counter = True
    x=1
    while counter:
        text = name.get()
        x=x+1
        try:
            with connection.cursor() as cursor:
                # Отправка SQL запроса
                sql = "INSERT INTO `scaner` (`number`) VALUES (%s)"
                cursor.execute(sql, (text))
            # Сохранение изменения 
            connection.commit()
        finally:
                print('Отправленно!')
        if x>1000000:
            counter=False
            connection.close()

root = Tk()
root.title("Считыватель Штрих кодов и комит в БД")
name = StringVar()
name_label = Label(text="Введите штрихкод:")
name_label.grid(row=0, column=0, sticky="w")
name_entry = Entry(textvariable=name)
name_entry.grid(row=0,column=1, padx=5, pady=5)
message_button = Button(text="Отправить", command=display_full_name)
message_button.grid(row=2,column=1, padx=5, pady=5, sticky="e")
root.mainloop()
Answer 1

Привожу пример на sqlite, но на логику это никак не влияет. Все просто: нажатие на кнопку вызывает обработчик, который производит запись в базу, очищает поле ввода. Все, программа готова к записи следующего значения.

import sqlite3
from tkinter import *

def display_full_name(conn, val, entry):
    cursor = conn.cursor()
    cursor.execute("insert into codes (val) values (?)", (val,))
    conn.commit()
    entry.delete(0, 'end')

with sqlite3.connect("/tmp/tmp.db") as conn:
    cursor = conn.cursor()
    cursor.execute("create table codes (val int)")
    conn.commit()
    root = Tk()
    root.title("Считыватель Штрих кодов и комит в БД")
    name = StringVar()
    name_label = Label(text="Введите штрихкод:")
    name_label.grid(row=0, column=0, sticky="w")
    name_entry = Entry(textvariable=name)
    name_entry.grid(row=0,column=1, padx=5, pady=5)
    message_button = Button(text="Отправить", command=lambda: display_full_name(conn, name.get(), name_entry))
    message_button.grid(row=2,column=1, padx=5, pady=5, sticky="e")
    root.mainloop()
READ ALSO
Как не загружать на страницу ответ сервера? Html <form target='''>

Как не загружать на страницу ответ сервера? Html <form target='''>

Отправляю из формы на сервер методом POST и возвращаемые данные(в моем случае просто HttpResponse('OK')) заменяют собой все содержимое страницыДелаю...

147
Attribute class not allowed on element span at this point

Attribute class not allowed on element span at this point

Валидатор выдаёт ошибку

134
JavaScript и wordpress

JavaScript и wordpress

Помогите сделать такую функцию на сайтеЕсть картинки, на которых изображен товар для продажи

131
Обмен сообщениями между ServiceHost

Обмен сообщениями между ServiceHost

Подскажите пожалуйста кто сталкивался с подобной задачей Вот часть (очень упрощённо ) имеющихся которые имеют hosting на WinNT службах

132