如何在发送到远程数据库之前缓存数据?

时间:2015-02-25 00:04:03

标签: python mysql linux

我有一个从传感器收集数据的应用程序。此数据需要存储在远程主机上的mysql数据库中。我希望在将数据发送到远程数据库之前以某种方式缓存此数据,以确保在网络暂时关闭时没有数据丢失。

我的第一个想法是将数据存储在本地文本文件中,并使用mysqls'加载数据infile local'将其每分钟上传一次到远程数据库。这里的问题是我希望在成功上传后从文本文件中删除上传的条目。但这有时会破坏文本文件,因为传感器进程仍在写入文件。

第二个想法是使用命名管道。但在那里我限制了容量并且还有阻塞问题......

我正在寻找一种解决方案,其中本地文件通常仅包含上次上传和现在之间的测量数据(即1分钟的数据)。如果上载不起作用,则此缓存文件需要保留所有后续内容(最多为文件系统的限制)。一旦上传再次起作用,所有这些存储的数据都需要上传并从缓存文件中删除。 有一种优雅的方式来实现这一目标吗?我使用的是Linux,MySql,Python,......

1 个答案:

答案 0 :(得分:2)

你有没有想过使用sqlite?这将允许您(大致)使用与远程MySQL服务器相同的数据层,但您可以在本地缓存,然后在准备好时推送插入。

它使用平面文件作为后端,但您不必担心这一点,并且有一些命令行工具(类似于MySQL客户端)来管理您的应用创建的数据文件。

此链接看起来并不隐蔽:

http://zetcode.com/db/sqlitepythontutorial/