除了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函数分析数据,因此我不知道这是否会影响任何建议。
答案 0 :(得分:4)
JSON用于在同一台机器上或Web上的进程之间交换少量数据。你需要一个数据库。
如果使用JSON,则需要先将整个结构读入内存,然后才能查询或更新它。您需要在每次更新后将整批数据写回磁盘(或者在断电时丢失数据的风险)。您会发现使用SQL比使用JSON更容易分析数据。
一些建议:
(1)使用SQLite(Python附带)
(2)考虑将城市和国家作为单独的列。考虑添加“州/省”列。
(3)考虑日期和时间是否应该是一个“时间戳”列。
(4)您没有提供任何有关实际数据的详细信息,只是说它是“10个词典列表”。你需要确定的事情(并且可能想请求帮助)是:那个列表真的是一套吗?如果它确实是一个列表,那么列表下标是什么意思?是否已提前知道所有可能的dict键(以及有多少个),或者它们是可变数据?答案将影响您设计表格的方式。