Добавление данных в SQlite, Tkinter

Владимир_92

Новичок
Пользователь
Янв 15, 2022
1
0
1
Добрый день. Впервые пишу приложение на Python. Столкнулся с проблемой добавления данных в БД.
При записи данных с поля Entry, каждый символ записывается в новую ячейку БД, т.е. если ввел число 123, будет 3 строки с числами 1,2,3. А при обновлении данных в ячейке, в БД сохраняется только последний символ поля Entry, т.е. после обновления ячейки числом 123, в ячейке остается 3. С датой вообще беда(((

Код:
from tkinter import *
import tkinter as tk
import sqlite3
from tkcalendar import DateEntry, Calendar
import datetime
import function as fu
     
new_window2 = tk.Tk()
new_window2.geometry("550x300")
#new_window2.resizable(width=False, height=False)
new_window2.title("ЭТЛ")

ETL = tk.Frame(new_window2, width=500, height=50, padx=10, pady=10)
ETL1 = tk.Frame(new_window2, width=500, height=200, padx=10, pady=10)
ETL.grid(row=0, column=0)
ETL1.grid(row=1, column=0)

Uch = tk.Label (ETL, text= "Участок ЭТЛ", font=("Times New Roman", 15))
Uch.grid (row=0, column=0,  sticky='W', padx=10, pady=10 )
Uch1 = DateEntry (ETL, date_pattern = 'dd-mm-YYYY')
Uch1.grid(row=0, column=1,  sticky='E', padx=10, pady=10)

def get_timestamp(y,m,d):
    return datetime.datetime.timestamp(datetime.datetime(y,m,d))
def get_date(tmstmp):
    return datetime.datetime.fromtimestamp(tmstmp).date()
def get_timestamp_from_string(s):
    t = s.split('-')
    return get_timestamp(int(t[2]), int(t[1]), int(t[0]))

txt_done_ETL1 = Entry(ETL1, justify=tk.RIGHT, width=10)
txt_done_ETL1.grid (row=1, column=1)
txt_done_ETL2 = Entry(ETL1, justify=tk.RIGHT, width=10)
txt_done_ETL2.grid (row=2, column=1)
txt_done_ETL3 = Entry(ETL1, justify=tk.RIGHT, width=10)
txt_done_ETL3.grid (row=3, column=1)
txt_done_ETL4 = Entry(ETL1, justify=tk.RIGHT, width=10)
txt_done_ETL4.grid (row=4, column=1)
txt_done_ETL5 = Entry(ETL1, justify=tk.RIGHT, width=10)
txt_done_ETL5.grid (row=5, column=1)
txt_human_ETL1 = Entry(ETL1, justify=tk.RIGHT, width=10)
txt_human_ETL1.grid (row=1, column=2)
txt_human_ETL2 = Entry(ETL1, justify=tk.RIGHT, width=10)
txt_human_ETL2.grid (row=2, column=2)
txt_human_ETL3 = Entry(ETL1, justify=tk.RIGHT, width=10)
txt_human_ETL3.grid (row=3, column=2)
txt_human_ETL4 = Entry(ETL1, justify=tk.RIGHT, width=10)
txt_human_ETL4.grid (row=4, column=2)
txt_human_ETL5 = Entry(ETL1, justify=tk.RIGHT, width=10)
txt_human_ETL5.grid (row=5, column=2)

def save():
    a = txt_done_ETL1.get()
    b = txt_done_ETL2.get()
    c = txt_done_ETL3.get()
    d = txt_done_ETL4.get()
    e = txt_done_ETL5.get()
    f = txt_human_ETL1.get()
    g = txt_human_ETL2.get()
    h = txt_human_ETL3.get()
    i = txt_human_ETL4.get()
    j = txt_human_ETL5.get()
    k = get_timestamp(Uch1.get())
    with sqlite3.connect('db/database.db') as db:
        cursor = db.cursor()
        a_query = """UPDATE ETL SET done = ? WHERE id = 1"""
        b_query = """UPDATE ETL SET done = ? WHERE id = 2"""
        c_query = """UPDATE ETL SET done = ? WHERE id = 3"""
        d_query = """UPDATE ETL SET done = ? WHERE id = 4"""
        e_query = """UPDATE ETL SET done = ? WHERE id = 5"""
        f_query = """UPDATE ETL SET human = ? WHERE id = 1"""
        g_query = """UPDATE ETL SET human = ? WHERE id = 2"""
        h_query = """UPDATE ETL SET human = ? WHERE id = 3"""
        i_query = """UPDATE ETL SET human = ? WHERE id = 4"""
        j_query = """UPDATE ETL SET human = ? WHERE id = 5"""
        k_query = """UPDATE ETL SET date = ? WHERE id = 1"""      
        cursor.executemany(a_query, a)
        cursor.executemany(b_query, b)
        cursor.executemany(c_query, c)
        cursor.executemany(d_query, d)
        cursor.executemany(e_query, e)
        cursor.executemany(f_query, f)
        cursor.executemany(g_query, g)
        cursor.executemany(h_query, h)
        cursor.executemany(i_query, i)
        cursor.executemany(j_query, j)
        cursor.executemany(k_query, k)
           
b = Button (ETL1, text ="Сохранить", command=save)
b.grid (row=6, column=1, columnspan=2)
     
new_window2.mainloop()
 
Последнее редактирование:

Форум IT Специалистов