哪一个更好的ini或json在服务器上存储硬代码数据?

时间:2014-02-27 03:27:24

标签: python json django

我有一些数据需要在我的项目中保存硬编码(相当大的数据),这可能是我的表单的设置。它的结构是这样的:

{X : [{a,b}, {c,d}], Y:[{e,f},{g,h}], Z: [{i,j},{k,l}], ...}

Jsonini或其他内容中存储硬代码的好方法是什么? 保持settings.py所有这一切并不好我猜!

3 个答案:

答案 0 :(得分:1)

这取决于您对“非常大的数据”的定义以及它将被更改的频率。

如果您的设置不经常更改,您可以使用您最喜欢的格式的简单文件。如果你走这条路,我建议看一下this project(它支持多种格式:dict,json,yaml,.ini)

如果您不断对这些设置进行更改,并且您的数据实际上非常大(数千行或类似的东西),您可能希望使用适当的数据库或其他存储,以提供更好的界面以编程方式编辑这些设置。如果您已经在为应用程序的非设置数据使用某种数据库,那么为什么不将它用于此呢?

确实,您可以从文件中读取大量设置,但如果这些设置存储在数据库中,则可能更容易与这些设置进行交互。

希望这有帮助。

答案 1 :(得分:1)

如果需要嵌套,则不能使用ini文件。

其他选项包括json,pickling,键/值存储(如memcache / redis)。如果需要修改,则不要使用磁盘。这样做也会使您的代码与许多没有可以使用的“文件系统”的PaaS提供程序不兼容。

我的建议:

  1. 使用k / v商店(如memcache / redis)。您不需要序列化(转换)您的数据,API非常直接,如果您使用redis,则可以轻松存储复杂的数据结构。此外,它非常非常

  2. json和酸洗有同样的问题;因为你需要使用文件系统。对文件系统的命中将减慢执行时间,如果要部署到heroku或类似系统,则会遇到问题,因为它们不提供文件系统访问权限。您将遇到的另一个问题是,如果您计划存储一些无法轻松转换的自定义对象,则可能需要编写自己的转换代码(序列化程序)。如果你想使用json,我建议将它存储在数据库中。

答案 2 :(得分:0)

在Python中,最简单的方法是使用直接的Python代码,pkl或JSON。

JSON非常容易加载:

import json

with open('data.json', 'r') as f:
    data = json.load(f)

pkl也是如此:

import pickle

with open('data.pkl', 'r') as f:
    data = pickle.load(f)

生成pkl文件:

with open('data.pkl', 'w') as f:
    pickle.dump(your_data, f)