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

Python 如何在发送到远程数据库之前缓存数据?,python,mysql,linux,Python,Mysql,Linux,我有一个从传感器收集数据的应用程序。这些数据需要存储在远程主机上的mysql数据库中。我想在将数据发送到远程数据库之前以某种方式缓存这些数据,以确保在网络暂时关闭时不会丢失任何数据 我的第一个想法是将数据存储在本地文本文件中,并使用mysqls“load data infle local”每分钟上传一次到远程数据库。这里的问题是,我想在上传成功后从文本文件中删除上传的条目。但这有时会破坏文本文件,因为传感器进程仍在写入文本文件 第二个想法是使用命名管道。但在那里,我的容量有限,也有阻塞问题 我正

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

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

第二个想法是使用命名管道。但在那里,我的容量有限,也有阻塞问题

我正在寻找一种解决方案,其中本地文件通常只包含上次上传到现在之间的测量数据(即1分钟的数据)。如果上载不起作用,此缓存文件需要保存所有后续内容(不超过文件系统的限制)。一旦上传再次工作,所有存储的数据都需要上传并从缓存文件中删除。
有没有一个优雅的方法来实现这一点?我正在使用Linux、MySql、Python等等,你想过使用sqlite吗?这将允许您使用(大致)与远程MySQL服务器相同的数据层,但您可以在本地缓存,然后在准备就绪时推送插入

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

这个链接看起来并不可怕:


您是否考虑过使用旋转日志文件?您可以使其每分钟旋转一个新文件。如果有一个进程试图发送目录中的所有日志文件,则可以删除成功发送的日志文件。或者,如果需要逻辑块,可以使用常规的旋转日志处理程序,该处理程序将在特定文件大小上旋转。通过这种方式,您只需检查文件的大小,如…256KB,然后发送。成功后删除整个文件。循环浏览文件名怎么样?您从未发送当前正在编写的文件,因此您可以在事后将其删除。感谢使用sqlite的想法-这对我来说很好