我现在已经习惯了这个想法很长一段时间了,但是没有看到有关人们这样做的任何信息。我有一个小网站项目,我需要加载和修改1个对象。这个对象非常简单,不应超过几kb。为什么不使用pickle
和/或shelve
来保存这些数据并加载它,而不是为这么少量的数据运行数据库?我打算在项目中使用像Bottle或Flask这样的微型Web框架。
有没有理由不使用此方法加载数据?它只会在Apache启动时加载pickle文件,因此我认为速度不会受到影响(比查询数据库更快)。
感谢您的任何意见!
答案 0 :(得分:3)
我不会直接将腌制的字符串写入文件。有太多的低级细节需要担心。查看有关在MySQL中存储Python对象的Durus,ZODB或this post from FriendFeed。
不要丢弃关系数据库,但它们开箱即用(即使是简单的项目)也会给你带来很多好处。
答案 1 :(得分:2)
没有理由不能通过标准的Python pickle或shelve模块实现对象持久性。只需确保您的物品干净且安全地可拣选。如果您的网站超出当前范围,可扩展性可能会成为一个问题,但在此之前您的想法应该可以正常工作。如果那一天到来,下一个明显的步骤就是考虑使用Python的优秀SQLite module,它预先打包了最新版本的语言。
答案 2 :(得分:1)
除了您已经了解的并发问题之外,还必须确保文件始终处于一致状态。例如,如果服务器在写入文件的过程中崩溃,那么会发生什么?如果你走这条路,你需要考虑并实施一个解决方案。