Python 如何使用时间数据在SQLite中选择记录

Python 如何使用时间数据在SQLite中选择记录,python,sqlite,Python,Sqlite,我是一个初学者程序员,我需要建立一个程序,让我能够根据收集的时间检索记录。我在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:

我是一个初学者程序员,我需要建立一个程序,让我能够根据收集的时间检索记录。我在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]
这不会抛出任何错误,但它返回“光子为零”,因此我显然没有正确地表达这一点。任何故障排除或帮助制定更优雅的解决方案都将不胜感激

strftime(“%M”
从时间中提取分钟字段:

> SELECT strftime('%M', '12:00:11')
00
要与
hms
值进行比较,请直接使用时间:

SELECT ... WHERE hms BETWEEN '12:00:00' AND '12:09:59'

如果要根据时间间隔的长度进行任何计算,最好使用
Timesec
列。

感谢您的建议--这会返回相同的问题。它似乎没有找到符合这些条件的记录(但它们正在被导入和导出,所有16000条记录都在统计中)。我试图避免使用timesec作为我的时间间隔,因为每天都有固定时间发生的事件,并且我的文件在不同的时间开始(例如,一天上午9点,另一天下午3点).我希望有一个程序可以处理所有事情。我还想知道我是否被这些行弄糊涂了:我把时间当作线性值,SQL把它当作文本,所以不知道“介于之间”因为没有行依赖性。在SQLite中,时间戳确实是字符串,但是字符串可以很好地比较。感谢您的解释。我开始怀疑我是否有另一种问题,因为即使是“cur.execute”(“SELECT Photon FROM Conc,其中hms=='11:16:46';”)也返回“none”。(该时间是第一条记录)如何
从Conc
中选择hms,然后看看您得到了什么?