如何在sqlite3中添加部分行数据,在python中一次添加一列
我的python代码生成一个条件(例如向上、向下、向左、向右),该条件发生时的开始时间,以及在将来某个时候该条件结束时的结束时间 目前,代码在数据库中生成以下输出 现状 条件|开始时间|结束时间 向上|零|零如何在sqlite3中添加部分行数据,在python中一次添加一列,python,sqlite,Python,Sqlite,我的python代码生成一个条件(例如向上、向下、向左、向右),该条件发生时的开始时间,以及在将来某个时候该条件结束时的结束时间 目前,代码在数据库中生成以下输出 现状 条件|开始时间|结束时间 向上|零|零 空| 44:03.1 |空 空|空| 44:05.2 向下|零|零 空| 44:05.2 |空 空|空| 44:20.4 右|空|空 空| 44:20.4 |空 空|空| 44:21.6 这是我当前用于记录第一个值(条件方向)的代码: c.execute('INSERT
空| 44:03.1 |空
空|空| 44:05.2
向下|零|零
空| 44:05.2 |空
空|空| 44:20.4
右|空|空
空| 44:20.4 |空
空|空| 44:21.6
这是我当前用于记录第一个值(条件方向)的代码:
c.execute('INSERT INTO conditionsAndTimesToPlot (condition_direction) VALUES (?)', (condition,))
conn.commit()
在发生其他事情后,开始时间将记录为:
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()
然后在任意时间后,该条件结束,并记录结束时间:
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作为时间参数。我原以为插入条件方向会插入新行,更新开始时间和结束时间会自然地回填第2列和第3列,但现在我在终端中发现了这个错误:
sqlite3.OperationalError: near "INTO": syntax error
问题
- 是不是有什么明显的东西让我错过了
- 我是否应该创建3个表(每个表对应一个值[条件、开始时间、结束时间],然后编写代码,将这三个表按行组合成循环中每个周期的单个表
David在将
更新修复为错误后(在更新
后将无修复为并进一步研究文档后,我发现了以下资源:
和
我的代码现在通过执行以下操作生成我想要实现的表外观。第一部分不变,这将创建每一新行:
c.execute('INSERT INTO conditionsAndTimesToPlot (condition_direction) VALUES (?)', (condition,))
conn.commit()
这将生成say Left | NULL | NULL。然后,您可以做的不是为下一列插入,而是更新并查找下一列中存在NULL值的列:
c.execute("UPDATE conditionsAndTimesToPlot SET start_time = (?) WHERE start_time IS NULL", (start_time_full,))
conn.commit()
c.execute("UPDATE conditionsAndTimesToPlot SET end_time = (?) WHERE end_time IS NULL", (end_time_full,))
conn.commit()
这会产生say Left | 44:03.1 | NULL。然后,对于结束时间,也会产生相同的结果,请查找NULL值:
c.execute("UPDATE conditionsAndTimesToPlot SET start_time = (?) WHERE start_time IS NULL", (start_time_full,))
conn.commit()
c.execute("UPDATE conditionsAndTimesToPlot SET end_time = (?) WHERE end_time IS NULL", (end_time_full,))
conn.commit()
这将产生say Left | 44:03.1 | 44:05.2。问题现在已完全解决。在Update
中没有INTO
关键字。请先查看Update
文档。