编程语言
首页 > 编程语言> > python-为Web应用程序保留几乎静态的数据的最佳方法是什么?

python-为Web应用程序保留几乎静态的数据的最佳方法是什么?

作者:互联网

我正在用python构建Web应用程序.此应用程序的一部分正在处理可以描述如下的数据:

Symbol     Begin Date      End Date
AAPL       Jan-1-1985      Dec-27-2010
...

数据有些静态-将定期更新,即:可以添加新条目,并且可以为所有条目更新“结束日期”字段.

现在的问题是:鉴于数据集具有或多或少的静态特性,什么是存储和使用数据集的最佳方法是什么? “工作”是指获取随机行,希望每秒获取多次.

我可以使用XML文件,SQL DB或SQLite,JSON对象文件以及内存中的某种python对象来完成此操作.

不同解决方案的利弊是什么?我会很感谢您的解释和帮助(例如,在SQL DB之后,直到10次/秒的XML文件是最好的).

更新:感谢您提供所有答案!只是很小的更新:当前的设置大约是3K行.每年可能增长到15,000条线.访问模式:每天定期更新一次完整的更新;因此添加行和更新结束日期都将立即完成.确实可以通过符号获取随机线,每秒可以完成几次.

解决方法:

每当数据更改时,我都会生成一个Python源文件,并且该文件主要由字典组成.这假设查找是通过符号进行的,并且数据很容易装入内存.

data = {
  "AAPL":       ("Jan-1-1985",      "Dec-27-2010"),
...
}

要批量更新结束日期,请使用pprint.pprint覆盖整个文件.

编辑:为了说明如何写入这样的文件,这是一个用随机数据填充文件的脚本

import random, string, pprint

def randsym():
    res =[]
    for i in range(4):
        res.append(random.choice(string.uppercase))
    return ''.join(res)

months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 
          'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
days = range(1,29)
years = range(1980,2010)
def randdate():
    return "%s-%s-%s" % (random.choice(months),
                         random.choice(days),
                         random.choice(years))

data = {}
for i in range(15000):
    data[randsym()] = (randdate(), "Dec-27-2010")

with open("data.py", "w") as f:
    f.write("data=")
    f.write(pprint.pformat(data))

要访问数据,请执行数据导入数据.

标签:data-structures,static,python
来源: https://codeday.me/bug/20191208/2094694.html