首页 > 解决方案 > Sqlite3 数据库在不应该添加条目时添加了条目

问题描述

我正在将 Sqlite3 与 python 一起使用,并使用名为 tblScheduledWork 的表创建一个数据库。当我运行我的脚本时,它会打开一个 tkinter GUI,我用它填写表单详细信息,然后当我单击提交时,它会运行我的函数回调。但是,由于某种原因,只要我在 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()

标签: pythonpython-3.xsqlite

解决方案


这只是一个猜测,因为您忘记显示可能相关的代码片段,它将回调分配给 tkinter 事件。

我想,你写在一个地方callback()而不是callback

在你的回调函数中添加一个 print 语句,你可能会看到,回调只被调用一次,此时你想指定调用哪个函数,然后当你填写表单时,不再调用该函数,但你会得到一个错误。

也许我错了,但理想情况下,你会编写最简单的完整程序,让我们能够重现错误


推荐阅读