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