Python:用于存储和检索历史数据的本地数据库

2024-05-13 03:47:33 发布

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

我正在尝试创建一些天气模型,我想在硬盘上存储和检索数据

数据格式如下:

{'Date_Time':'2020-07-18 18:16:17','Temp':29.0, 'Humidity':45.3}
{'Date_Time':'2020-07-18 18:18:17','Temp':28.9, 'Humidity':45.4}
{'Date_Time':'2020-07-18 18:20:17 ','Temp':28.8, 'Humidity':48.3}

我每天都有新的数据,我有大约5年前的旧数据。 我希望定期合并数据集,并创建一个大型数据集进行操作

我需要的东西:

1. Check if the date-time pair already exists, else add new data
2. Change old data values
3. Add new data values to the database
4. Must be on a local storage, I have plenty of space.

我想要但不需要的东西:

1. Fastest Read access possible, not so concerned about storage time as that happens in the background mostly.
2. Something that makes searching for all data from today, last 7 days etc easy to retrieve

我尝试过的事情:

  1. 附加到json文件

    现在可以使用,但速度很慢,因为每次要追加/修改数据时都必须加载整个数据集

  2. 附加到文本文件

    易于存储,但很难修改/检查值

  3. SQLLite3

    我对此进行了调查,结果似乎是可行的,只是想知道在我继续做这件事之前,是否还有更好的办法

谢谢你的帮助


Tags: theto数据模型newdatadatethat
2条回答

不确定是否“更好”,但json_database似乎符合您的要求:

  • 从文件中保存和加载
  • 按键和键/值对递归搜索
  • 模糊搜索
  • 支持任意对象

JSON vs TXT vs SQL或NoSQL DB的选择将基于您当前和未来的需求

  1. 根据您的输入,您有过去5年的数据,示例中的数据是每2秒一次。基于此,看起来您将拥有一个大型数据集,或者需要频繁地修剪数据集。对于大型数据集,使用SQL或NoSQL DB是理想的,这样您就不会在每次读/写操作时将所有数据加载到内存中
  2. 使用日期时间作为主键,您将能够使用数据库快速读写
  3. 使用SQLLite是一个良好的开端,但如果您的数据将增长,您应该计划迁移到外部SQL/NoSQL数据库
  4. 考虑到您的数据大部分是基于时间的,所以最好对XDB或Graphite之类的时间序列数据库进行评估

相关问题 更多 >