我是初学程序员,我需要构建一个程序,允许我根据收集的时间检索记录。我在python框架中使用SQLite来做这件事。
我的代码如下:
cur.execute("CREATE TABLE Conc(Timesec INT, Timehrs REAL, Photon INT, hms TEXT);")
creader = csv.reader(open(FileName, 'rb'), delimiter=',')
t = (creader,)
for t in creader:
cur.execute("INSERT INTO Conc VALUES(?,?,?,?)", t)
此代码工作正常,并创建一个包含以下数据的表:
time(sec), time(h), photons, time (H:M:S)
0.0 , 0.0000 , 0 , 11:16:36
5.0 , 0.0014 , 1698 , 11:16:41
10.0 , 0.0028 , 1793 , 11:16:46
15.0 , 0.0042 , 1764 , 11:16:51
20.0 , 0.0056 , 1751 , 11:16:56
25.0 , 0.0069 , 1779 , 11:17:01
持续数百万条记录(每5秒新记录一次。)
我正试图想出一种方法来使用H:M:S时间来检索行,计算一些平均值,然后将解决方案应用于表中的其他行。我有一个使用经过时间的解决方案,但这使得将代码应用于其他文件很困难(它们并非都在同一时间启动)。
我的目标是在12:00:00和12:09:00之间调用特定的行。
我试过这个:
query= cur.execute("SELECT AVG(Photon) FROM Conc WHERE hms BETWEEN strftime('%M', '12:00:11') AND strftime('%M', '12:09:11');")
print query
for row in cur.fetchall():
print "The photons are", row[0]
这不会引发任何错误,但它会返回“光子是无”,所以我显然没有正确地说这个。任何故障排除或帮助制作更优雅的解决方案将不胜感激。
答案 0 :(得分:0)
strftime('%M'
从时间中提取分钟字段:
> SELECT strftime('%M', '12:00:11')
00
要与hms
值进行比较,请直接使用时间:
SELECT ... WHERE hms BETWEEN '12:00:00' AND '12:09:59'
如果您想根据时间间隔的长度进行任何计算,最好使用Timesec
列。