Sqlite3数据库在不应该添加条目时

时间:2019-10-14 22:07:03

标签: python python-3.x sqlite

我将Sqlite3与python结合使用,并使用名为tblScheduledWork的表创建数据库。当我运行脚本时,它会打开一个tkinter GUI,并在其中填充表单详细信息,然后单击“提交”时,它将运行我的函数回调。但是,由于某种原因,它会在我运行程序时立即在Action_time列和// chedched_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 个答案:

答案 0 :(得分:2)

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

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

在您的回调函数中添加一条print语句,您可能会看到,该回调仅在您要指定要调用的函数的那一刻被调用一次,然后在您填写该函数的表单时被调用一次。不再调用,但是会收到错误消息。

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