1

我目前正在用 Python 制作一个网络应用程序。它将包含并使用许多关于几件事的不变数据。这些数据将在大多数应用程序中不同程度地使用。

我最初的计划是将这些数据与所有其他变化的数据一起放入数据库中,但对我来说,这似乎是多余的,并且是一个潜在且不必要的阻塞点(因为相同的数据将被多次查询/在大多数页面加载时以各种组合/互动)。

我已经对其进行了重写,以便数据现在存储在几个字典的字典中(即在内存中),本质上是常量,通过函数访问数据。数据看起来有点像这样:

{
    0: {
           'some_key': 'some_value',
           'another_key': 'another_value',
           ...
    },
    ...
}

这内存效率高吗?有没有一种更可靠、更真实/pythonic/只是更好(在速度、内存使用等方面)的方式来做这种事情?使用数据库实际上是最好的方法吗?

4

2 回答 2

4

这种方法没有什么特别的问题,但我会注意一些问题:

  1. 为什么要嵌套字典?为什么不是一个平面字典,甚至是一个充满变量的模块?

  2. 如果这些是“对象”数据,为什么不将它们存储在实际对象中呢?同样,这些可以存在于模块或字典中的变量中。

  3. 您的 Web 框架可能已经有针对此特定问题的解决方案。

于 2013-11-04T13:48:34.443 回答
0

只要您有足够的内存来存储您需要保存的数据,这似乎是一种非常明智的存储参考数据的方式。我同意这应该比从数据库中读取更快,因为数据已经在内存中并已排序以进行有效访问。

如果您不想将此数据实际存储在源代码中,则可以将其存储在 json 文件中(json.dump () 写入文件, json.load() 回读)。但是您可能希望在应用程序启动时将其读入内存,然后将其保存在内存中,而不是每次都返回文件。

于 2013-11-04T13:51:05.663 回答