python - 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()
解决方案
这只是一个猜测,因为您忘记显示可能相关的代码片段,它将回调分配给 tkinter 事件。
我想,你写在一个地方callback()
而不是callback
在你的回调函数中添加一个 print 语句,你可能会看到,回调只被调用一次,此时你想指定调用哪个函数,然后当你填写表单时,不再调用该函数,但你会得到一个错误。
也许我错了,但理想情况下,你会编写最简单的完整程序,让我们能够重现错误
推荐阅读
- python - 如何在通用 UpdateView 中为 django 表单小部件指定查询集
- visual-studio-2019 - VS 2019 重建删除发布所需文件
- sql - 需要帮助查找哪个类别没有项目 - SQL/Access 新手
- r - 将条件应用于具有 R 中索引的多个列
- javascript - 由于目标被视为被动,无法在被动事件侦听器中阻止默认值
- matplotlib - plt.savefig 正在保存旧版本的情节
- javascript - 制作不同的随机数
- r - 在 QQplot 中为模型画线
- java - 如何通过 Log4j2 将日志发送到 Graylog?
- datetime - .Net Core 3.1 Web Api 的自定义 OData 日期时间序列化器