Python“内存中DB样式”数据类型

2024-06-16 10:39:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在创建一个使用树莓皮的气象站。我有一个mySQL数据库设置不同的传感器(温度,湿度,压力,雨水等),现在正在处理风传感器。在

我有一个python程序,它监视风速计的GPIO引脚,并计算出风速的脉冲数。它还可以通过ADC从风向标上读取信号,从而获得方向。对于其他传感器,我只每隔几分钟处理一次,然后直接将数据转储到数据库中。因为我需要从风传感器的数据中计算出很多东西,所以我不一定要每5秒向数据库写入数据,然后再读回过去5分钟的数据来计算当前的速度和方向。我想收集内存中的数据,进行处理,然后将最终的数据写入数据库。传感器读数如下:

日期时间、速度、方向
2013-6-20 09:33:45,4.5,W
2013-6-20 09:33:50,4.0,软件
2013-6-20 09:33:55,4.3,W

该程序每5秒计算一次风传感器的数据。我想每5分钟向数据库写入数据。因为数据库在SD卡上,我显然不想写入数据库60次,然后读回去处理,然后每5分钟将其写入永久存档数据库。在

我用一个列表会更好吗?或者一本由日期时间键控的元组字典?
{日期时间。日期时间(2013,6,20,9,33,45,631816):(“4.5”,“W”)}
{日期时间。日期时间(2013,6,20,9,33,50,394820):(“4.0”,“软件”)}
{日期时间。日期时间(2013,6,20,9,33,55,387294):(“4.3”,“W”)}

对于后者,更新词典的最佳方法是什么?我是不是应该把它转储到一个数据库然后再读回来?对于如此之少的数据来说,每天的读/写量似乎太多了。在


Tags: 数据程序数据库软件时间mysql传感器温度
3条回答

一个选项是使用redis存储数据。它是一个关键价值存储,它对存储数据非常有用,就像你所说的。它在内存中运行并将数据写入磁盘以保持持久性,这是configurable这样您就可以使它每几小时或每天一次写入磁盘。redis-py库非常容易使用。

根据我的一般经验,使用日期时间键控的字典比较容易。一个列表很快就会变得非常混乱。在

不过,我不确定如何最好地更新词典。可能是我的Python已经生锈了,但在我看来,转储到数据库并读回数据有点多余,尽管您的声明可能有点不清楚。有什么方法可以转储到程序内部的变量?在

如果没有,我认为转储到数据库并读回可能是您唯一的选择……但是,我的Python有点生疏。在

也就是说,虽然我不想成为一个Programmaticus Takeitovericus,但我想知道您是否曾经研究过用于数据存储的XML?最后我换成了它,因为我发现它比数据库更容易使用,而且读写也更少。我不知道你的项目规格,所以这个建议可能对你毫无意义。在

在Python程序和数据库之间有多个缓存层。特别是,Linux磁盘块缓存可能会根据使用模式将数据库保存在核心中。因此,您不应认为写入数据库和回读一定比在应用程序中放入的某些自制brew缓存慢。你为提前优化你的数据库而写的代码将会比你不写的代码有更多的缺陷。在

对于您指定的工作负载,相对于SQLite,MySQL让我觉得有点重,但是您可能没有明确的理由需要它。在

相关问题 更多 >