База данных Sqlite3 добавляет запись, когда она не должна быть - PullRequest
1 голос
/ 15 октября 2019

Я использую Sqlite3 с python и создаю базу данных с таблицей tblScheduledWork. Когда я запускаю свой скрипт, он открывает графический интерфейс пользователя tkinter, которым я заполняю детали формы, а затем, когда я нажимаю «Отправить», он запускает мой обратный вызов функции. Тем не менее, по какой-то причине он добавляет запись, как только я запускаю программу только с - в столбце action_time и // в столбце schedule_date, как вы можете видеть в моем коде, единственное место, где я использую эти символы, это при присоединениинесколько строк вместе для ввода в два столбца Время действия и Запланированная дата.

def callback():
    c.execute('''CREATE TABLE IF NOT EXISTS tblScheduledWork
    (Job_ID INTEGER PRIMARY KEY UNIQUE, Action_Time TEXT, Scheduled_Date TEXT, Ticket_Id INT, Client TEXT,
    To_Do TEXT, Shift TEXT, Completed TEXT, Notes TEXT, UNIQUE (Ticket_Id))''')

    entries = []


    action_time = str(action.get() + ' - ' + action2.get())
    scheduled_date = str(scheduled_day.get() + '/' + scheduled_month.get() + '/' + scheduled_year.get())
    ticket_id = ticket.get()
    client_name = client.get()
    to_do = todo.get()
    shift_time = shift.get()
    completed_yesno = completed.get()
    notes_yesno = notes.get()


    entries.append((action_time, scheduled_date, ticket_id, client_name, to_do, shift_time, completed_yesno, notes_yesno))

    c.executemany('''INSERT OR IGNORE INTO tblScheduledWork (Action_Time, Scheduled_Date, Ticket_Id, Client,
    To_Do, Shift, Completed, Notes) VALUES
    (?,?,?,?,?,?,?,?)''', entries)


    conn.commit()

1 Ответ

2 голосов
/ 15 октября 2019

Это всего лишь предположение, поскольку вы забыли показать, вероятно, соответствующий фрагмент кода, который присваивает обратный вызов событию tkinter.

Полагаю, вы написали в одном месте callback() вместо callback

добавьте оператор print в вашу функцию обратного вызова, и вы, вероятно, увидите, что обратный вызов вызывается только один раз, в тот момент, когда вы хотите указать, какую функцию вызывать, а какую позже, когда вы заполняетеформа функция больше не вызывается, но вместо этого вы получаете сообщение об ошибке.

Возможно, я ошибаюсь, но в идеале вы должны написать простейшую возможную полную программу, которая позволяет нам воспроизвести ошибку

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