Json与SQL建议

时间:2011-05-08 17:06:43

标签: python sql json

除了python之外,我没有那么多的编程经验,我正在开始一个项目,它将按城市/国家/地区,日期和时间来存储信息。我之前使用过simplejson并发现它非常有用,特别是因为使用python对json数据进行排序是多么容易。

如果我使用json,我会有一个包含30个不同键的字典(对于每个城市/国家),然后对于每个国家或城市,我会将值设为一个新的字典,其中日期为关键字,值为将是另一个以时间为关键字的字典。每个时间键的值将是10个不同字典的列表(如果我不是更简洁地说,我很抱歉)。我计划将这些数据保存多年,数据主要只是文本。我不知道会有多少文字,但会有很多文字。数据将每小时更新几次。我将是唯一访问数据的人,我最终可能会将数据放在网上供人们查看。

因此数据结构可能如下所示:

data = {
  'Toronto, Canada': {
    '2011-05-04': {
      '00:30': [
        { ... },
        { ... },
        ...
      ],
      '02:00': [
        ...
      ],
      ...
    },
    '2011-05-05': {
    },
    ...
  },
  'Tokyo, Japan': {
    ...
  },
  ...
}

我开始自学SQL但是有人会推荐什么?我应该创建我上面描述的json结构(或者某些更改的版本,我可以提出任何建议)还是应该通过SQL创建数据库?

此外,我将使用不同的python函数分析数据,因此我不知道这是否会影响任何建议。

1 个答案:

答案 0 :(得分:4)

JSON用于在同一台机器上或Web上的进程之间交换少量数据。你需要一个数据库。

如果使用JSON,则需要先将整个结构读入内存,然后才能查询或更新它。您需要在每次更新后将整批数据写回磁盘(或者在断电时丢失数据的风险)。您会发现使用SQL比使用JSON更容易分析数据。

一些建议:

(1)使用SQLite(Python附带)

(2)考虑将城市和国家作为单独的列。考虑添加“州/省”列。

(3)考虑日期和时间是否应该是一个“时间戳”列。

(4)您没有提供任何有关实际数据的详细信息,只是说它是“10个词典列表”。你需要确定的事情(并且可能想请求帮助)是:那个列表真的是一套吗?如果它确实是一个列表,那么列表下标是什么意思?是否已提前知道所有可能的dict键(以及有多少个),或者它们是可变数据?答案将影响您设计表格的方式。