Python 构建和访问数据库运行时

Python 构建和访问数据库运行时,python,python-3.x,database,Python,Python 3.x,Database,我的代码是从传感器获取数据,并根据最后N分钟的数据执行一些操作 目前,我只是在代码开头初始化一个列表,如下所示 x = [] while running: new_value = acquire_new_point() x.append(new_value) do_something_with_x(x) 尽管有效,但它仍存在一些固有缺陷,使其处于次优状态。最重要的是: 如果代码崩溃或重新启动,则会重置整个时间历史记录 没有过去时间历史的记录或日志 内存消耗可能会失控

我的代码是从传感器获取数据,并根据最后N分钟的数据执行一些操作

目前,我只是在代码开头初始化一个列表,如下所示

x = []
while running:
    new_value = acquire_new_point()
    x.append(new_value)

    do_something_with_x(x)
尽管有效,但它仍存在一些固有缺陷,使其处于次优状态。最重要的是:

  • 如果代码崩溃或重新启动,则会重置整个时间历史记录
  • 没有过去时间历史的记录或日志
  • 内存消耗可能会失控,超过可用内存
一些显而易见的解决办法如下:

  • 将每个新元素记录到csv文件中,并在代码启动时读取它
  • 将数据分成N分钟的块,并从超过N分钟的内存块中删除
然而,我有一种感觉,这可能是一个已经制定了更具体解决方案的问题。我的第一个想法是HDF5,但我不确定它是否是解决这个问题的最佳候选


那么,对于需要在运行时写入(附加)并且需要部分访问(仅在最后N分钟)的数据库,什么是最佳策略/格式?有什么工具专门用于这样的任务吗?

我只需要使用SQLite和一个两列表(
timestamp
value
),在时间戳上有一个索引

这还有一个额外的好处,就是您可以使用SQL进行数据分析,这可能比用Python手工进行数据分析要快

如果您不需要历史数据,您可以定期
从时间戳<…
所在的数据中删除