【发布时间】:2014-12-23 17:20:05
【问题描述】:
我正在编写一些代码来替换迪斯科活动的手写寄存器,该代码使用 sqlite 数据库来存储数据。 sqlite 文件中的表有 4 列:Name、Reply、Time_in 和 Time_out。默认情况下 Timein/out 是空的,它们里面什么都没有。名称和回复通过 csv 文件导入。在事件结束时,如果人们没有“退出”,那么代码的操作员会按下一个按钮(使用 tkinter)来更新剩余的记录。 sqlite 文件中的数据如下所示:
Name Reply Time_in Time_out
JoeBlogs Y
我希望代码更新所有具有回复“Y”和 time_in 值但没有 time_out 值的记录。我试过用 python 2.7 写这个
c.execute("UPDATE Table1 SET Time_out = TIME('now') WHERE Time_in IS NOT NULL AND Time_out ISNUll AND Reply = 'Y'")
conn.commit()
测试数据:
Name Reply Time_in Time_out
JoeBloggs Y 20:40:44
JohnSmith N
JohnBlogg Y
JoeSmith Y 20:33:11 22:14:22
更新语句后,任何记录都没有变化,所以我也尝试了:
c.execute("UPDATE Table1 SET Time_out = TIME('now') WHERE Time_in IS NOT NULL AND Time_out ='' AND Reply = 'Y'")
conn.commit()
但这只是覆盖以前的 Time_out 值,即使有一个值,它只为答复 Y 执行此操作,这是向前迈出的一步。即
Name Reply Time_in Time_out
JoeBloggs Y 20:40:44 22:44:22
JohnSmith N
JohnBlogg Y 22:44:22
JoeSmith Y 20:33:11 22:44:22
我希望在更新声明之后得到这个结果:
Name Reply Time_in Time_out
JoeBloggs Y 20:40:44 22:44:22
JohnSmith N
JohnBlogg Y
JoeSmith Y 20:33:11 22:14:22
谁能指出这个问题的正确语法?
【问题讨论】:
-
找到了答案。我使用了 'WHERE Time_in'' 和 Time_out='' '
标签: python-2.7 sqlite