使用Python Pickle创建网站有什么问题吗?

6 投票
3 回答
2072 浏览
提问于 2025-04-16 03:56

我一直在考虑这个想法很久了,但还没看到有人在做这件事。我有一个小网站项目,需要加载和修改一个对象。这个对象很简单,大小不会超过几千字节。与其为这么少的数据运行一个数据库,为什么不直接用 pickleshelve 来保存和加载这些数据呢?我打算用像 Bottle 或 Flask 这样的微型网页框架来做这个项目。

有没有什么理由不使用这种方法来加载数据呢?这个方法只会在 Apache 启动时加载一次 pickle 文件,所以我觉得速度不会受到影响(比查询数据库要快)。

谢谢大家的建议!

3 个回答

1

除了你已经知道的并发问题之外,你还必须确保文件始终处于一致的状态。比如说,如果服务器在写文件的过程中崩溃了,那会发生什么呢?这是一个你需要考虑的情况,并且如果你选择这个方向,就需要想办法解决这个问题。

3

我不会直接把一个被“腌制”的字符串写入文件,因为这样会有很多底层的细节需要担心。你可以看看 DurusZODB,或者 这篇关于FriendFeed的文章,它们讲的是如何在MySQL中存储Python对象。

不过,不要忽视关系型数据库,它们开箱即用,能给你带来很多便利(即使是对于简单的项目)。

2

你完全可以通过Python的标准库中的pickleshelve模块来实现对象的持久化存储。只要确保你的对象能够被安全地保存就行了。如果你的网站发展得很快,可能会面临扩展性的问题,但在那之前,你的想法应该是没问题的。如果真的到了那一天,接下来的一个明显的选择就是考虑使用Python自带的优秀的SQLite 模块,这个模块在最近版本的Python中已经包含了。

撰写回答