我的python代码产生一个条件(例如Up,Down,Left,Right),该条件发生时的开始时间,以及将来某个条件结束时的结束时间。
目前,代码在数据库中生成以下输出。
向上| NULL | NULL
NULL | 44:03.1 | NULL
NULL | NULL | 44:05.2
向下| NULL | NULL
NULL | 44:05.2 | NULL
NULL | NULL | 44:20.4
对| NULL | NULL
NULL | 44:20.4 | NULL
NULL | NULL | 44:21.6
这是我当前用于记录第一个值的条件,即条件方向:
c.execute('INSERT INTO conditionsAndTimesToPlot (condition_direction) VALUES (?)', (condition,))
conn.commit()
在其他一些事情发生之后,start_time将被记录为:
c.execute('INSERT INTO conditionsAndTimesToPlot (start_time) VALUES (?)', (start_time_full,))
conn.commit()
然后在某个任意时间之后条件结束并且结束时间记录为:
c.execute('INSERT INTO conditionsAndTimesToPlot (end_time) VALUES (?)', (end_time_full,))
conn.commit()
向上| 44:03.1 | 44:05.2
向下| 44:05.2 | 44:20.4
对| 44:20.4 | 44:21.6
我尝试使用UPDATE作为时间参数。我认为条件方向的INSERT将插入一个新行,并且开始和结束时间的UPDATE会自然地回填第2和第3列,但现在我在终端中收到此错误:
sqlite3.OperationalError: near "INTO": syntax error
感谢您对我的第一个stackoverflow问题的帮助,
大卫
答案 0 :(得分:1)
修复UPDATE INTO
错误(INTO
之后没有UPDATE
)并进一步研究文档后,我找到了以下资源:
https://www.sqlite.org/lang_update.html和https://www.tutorialspoint.com/sqlite/sqlite_update_query.htm。
我的代码现在通过执行以下操作生成我想要实现的表外观。第一部分没有改变,这会创建每一个新行:
c.execute('INSERT INTO conditionsAndTimesToPlot (condition_direction) VALUES (?)', (condition,))
conn.commit()
这产生说左| NULL |空值。然后代替INSERT用于下一列,您可以做的是UPDATE并查找下一列有NULL值的列:
c.execute("UPDATE conditionsAndTimesToPlot SET start_time = (?) WHERE start_time IS NULL", (start_time_full,))
conn.commit()
这产生说左| 44:03.1 |空值。然后在结束时间相同,查找NULL值:
c.execute("UPDATE conditionsAndTimesToPlot SET end_time = (?) WHERE end_time IS NULL", (end_time_full,))
conn.commit()
这产生说左| 44:03.1 | 44:05.2。问题现在已经完全解决了。