在Django - MYSQL中自动删除“旧”数据集

时间:2018-04-18 23:33:24

标签: python mysql django

我有一个传感器节点,每隔5分钟(温度,pH值)将环境数据及其电池电量传输到MYSQL实例(和Django应用程序)。现在,我将所有记录的温度,pH值数据无限期地存储在数据库中,但是它们希望将电池级数据存储限制为最多3个月。原因是,它不是历史数据分析的重要指标,因此没有必要占用磁盘空间,特别是如果有多个节点发送这样的数据。

将我的models.py视为处理此类电池电量数据...

class Node_Health(models.Model):
     # Battery levels, in percentage to two decimal placing
     timestamp = models.DateTimeField(db_index=True,auto_now=False, auto_now_add=False, null=True) # db index
     battery_lvl = models.CharField(max_length=4,null=True)

问题是,我如何(最佳实践)自动监控&一旦电池水平日志达到>,丢弃“旧”电池电量数据。在Django-python框架中3个月?即仅存储db中最近三个月的电池电量。我是否使用带有python脚本的CRON或Celery来检查数据库是否存在过多的数据并清除这些“旧数据”? (这是我知道的唯一方式,这可能不是更好的方法)...我当然不是db和dev-ops的专家;会很感激任何指针或建议。

2 个答案:

答案 0 :(得分:2)

我认为您可以使用 MYSQL事件调度程序。 MySQL事件是根据5.1.6运行的任务。因此,我们有时将其称为预定事件。创建事件时,您正在创建一个命名数据库对象,该对象包含一个或多个SQL语句,这些SQL语句将以一个或多个定期间隔执行,从特定日期和时间开始和结束。从概念上讲,这类似于Unix crontab(也称为“cron作业”)或Windows任务计划程序的想法。

参考文献:

注意:

  1. 我不确定哪种方法更可靠,以达到您的要求
  2. MySQL事件调度程序仅适用于版本{{1}}

答案 1 :(得分:1)

我通常使用CRON作业来完成这项任务。

我会按照你描述的方式设置它。