【问题标题】:How to update a column for multiple records dependant on other column values with sqlite python 2.7如何使用sqlite python 2.7更新依赖于其他列值的多个记录的列
【发布时间】: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


【解决方案1】:

这是我想出的: c.execute("UPDATE Table1 SET Time_out = TIME('now') WHERE Time_in<>'' and Time_out=''")
conn.commit()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-01-09
    • 1970-01-01
    • 1970-01-01
    • 2015-06-17
    • 1970-01-01
    • 2013-09-18
    • 2021-07-10
    • 2023-03-23
    相关资源
    最近更新 更多