gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 16:53:09 25 4
gpt4 key购买 nike

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

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

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

现在,问题是:鉴于数据集或多或少的静态特性,存储和使用它的最佳方式是什么? “工作”意味着获取随机行,希望每秒超过几次。

我可以使用 XML 文件、SQL DB 或 SQLite、JSON 对象文件和内存中的某种 python 对象来完成。

不同解决方案的优缺点是什么?我将感谢您的解释和边缘情况(例如“直到 10 次/秒的 XML 文件是最好的,在 SQL DB 之后”)。

更新:感谢您的所有回答!只是一个小的更新:目前这个集合大约有 3000 行。它可能会在一年内增长到 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))

要访问数据,请执行from data import data

关于python - 为 Web 应用程序保留几乎静态数据的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4541570/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com