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

标签 python mysql linux

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

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

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

我正在寻找一种解决方案,其中本地文件通常只包含上次上传和现在之间的测量数据(即 1 分钟的数据)。如果上传不工作,这个缓存文件需要保存所有后续内容(达到文件系统的限制)。一旦上传再次开始,所有这些存储的数据都需要上传并从缓存文件中删除。 有没有一种优雅的方法来实现这一目标?我正在使用 Linux、MySql、Python,...

最佳答案

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

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

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

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

关于python - 如何在发送到远程数据库之前缓存数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28708782/

相关文章:

php - WordPress MySQL 错误 : Unknown storage engine 'InnoDB'

java - 登录Weblogic集群环境-LINUX

django - 在新的 ssh session 中控制 Gunicorn

python - 将列表作为索引传递以在 n 维嵌套列表中赋值

Python 字典中元素的组合

c# - 使用 MYSQL 数据库在 .NET 中设置和部署

php - 在提交表单之前插入和检索 id

linux - 通过 SSH 的 Perl IDE

python - Flask View 中的 ajax 发布数据

python - isinstance() 意外返回 False