我有一些数据需要在我的项目中保存硬编码(相当大的数据),这可能是我的表单的设置。它的结构是这样的:
{X : [{a,b}, {c,d}], Y:[{e,f},{g,h}], Z: [{i,j},{k,l}], ...}
在Json
或ini
或其他内容中存储硬代码的好方法是什么?
保持settings.py
所有这一切并不好我猜!
答案 0 :(得分:1)
这取决于您对“非常大的数据”的定义以及它将被更改的频率。
如果您的设置不经常更改,您可以使用您最喜欢的格式的简单文件。如果你走这条路,我建议看一下this project(它支持多种格式:dict,json,yaml,.ini)
如果您不断对这些设置进行更改,并且您的数据实际上非常大(数千行或类似的东西),您可能希望使用适当的数据库或其他存储,以提供更好的界面以编程方式编辑这些设置。如果您已经在为应用程序的非设置数据使用某种数据库,那么为什么不将它用于此呢?
确实,您可以从文件中读取大量设置,但如果这些设置存储在数据库中,则可能更容易与这些设置进行交互。
希望这有帮助。
答案 1 :(得分:1)
如果需要嵌套,则不能使用ini文件。
其他选项包括json,pickling,键/值存储(如memcache / redis)。如果需要修改,则不要使用磁盘。这样做也会使您的代码与许多没有可以使用的“文件系统”的PaaS提供程序不兼容。
我的建议:
使用k / v商店(如memcache / redis)。您不需要序列化(转换)您的数据,API非常直接,如果您使用redis,则可以轻松存储复杂的数据结构。此外,它非常非常。
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)