Добрый день. Впервые пишу приложение на Python. Столкнулся с проблемой добавления данных в БД.
При записи данных с поля Entry, каждый символ записывается в новую ячейку БД, т.е. если ввел число 123, будет 3 строки с числами 1,2,3. А при обновлении данных в ячейке, в БД сохраняется только последний символ поля Entry, т.е. после обновления ячейки числом 123, в ячейке остается 3. С датой вообще беда(((
При записи данных с поля 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()
Последнее редактирование: