轻松将Python对象保存到文件中,然后再将它们加载回来。
项目描述
Pickle Warehouse使您能够轻松将Python对象保存到具有有意义标识符的文件中。
如何使用
Pickle Warehouse提供了一个类似字典的对象,它与您电脑上的特定目录相关联。
from pickle_warehouse import Warehouse warehouse = Warehouse('/tmp/a-directory')
键对应于文件,值被序列化到文件中。
warehouse['filename'] = range(100) import pickle range(100) == pickle.load(open('/tmp/a-directory/filename', 'rb'))
您还可以读取和删除内容。
# Read range(100) == warehouse['filename'] # Delete del(warehouse['filename'])
最酷的部分是键的解析方式。除了字符串和类似字符串的对象外,您还可以使用字符串的可迭代对象;所有这些索引都指代文件 /tmp/a-directory/foo/bar/baz
warehouse[('foo','bar','baz')] warehouse[['foo','bar','baz']]
如果您传递一个指向文件的相对路径,它将按预期拆分;即,字符串在斜杠和反斜杠上拆分。
warehouse['foo/bar/baz'] warehouse['foo\\bar\\baz']
注意:指定绝对路径不会将内容保存到仓库目录之外。
warehouse['/foo/bar/baz'] # -> foo, bar, baz warehouse['C:\\foo\\bar\\baz'] # -> c, foo, bar, baz # (lowercase "c")
如果您传递一个URL,它也将以合理的方式拆分。
# /tmp/a-directory/http/thomaslevine.com/!/?foo=bar#baz warehouse['http://thomaslevine.com/!/?foo=bar#baz'] # /tmp/a-directory/thomaslevine.com/!?foo=bar#baz warehouse['thomaslevine.com/!?foo=bar#baz']
日期和时间将转换为 YYYY-MM-DD
格式。
import datetime # /tmp/a-directory/2014-02-26 warehouse[datetime.date(2014,2,26)] warehouse[datetime.datetime(2014,2,26,13,6,42)]
您还可以混合这些格式!
# /tmp/a-directory/http/thomaslevine.com/open-data/2014-02-26 warehouse[('http://thomaslevine.com/open-data', datetime.date(2014,2,26))]
它还具有典型的字典方法,如 keys
、values
、items
和 update
。
何时使用
pickle-warehouse是在您想拥有Python对象的持久存储时使用的。如果您想要内存中的pickle存储,请查看 _pickleDB: https://pythonhosted.org/pickleDB/.
Pickle Warehouse在MongoDB之上严格更好,因此您应该在任何之前使用MongoDB的地方使用它。Pickle Warehouse是为需要可伸缩性(易于分片)、传统数据库可靠性(ACID)、灵活的模式和高度可配置的索引的写密集型工作负载而设计的。
Pickle Warehouse是酸性的
以下是它是如何实现的。
- 原子性
将写入操作到一个临时文件,然后重命名。
- 一致性
我不懂这个,但我觉得我弄懂了。
- 隔离
同时写入的处理非常干净。如果在写入时发生读取,则会抛出错误,您可以再试一次。
- 持久性
所有数据都立即保存到磁盘上。
Mongo 替换功能清单
调用 fsync 两次,以确保。
读写时的模式验证(可配置),因为谁知道你昨天做了什么,或者你是否后来改变了主意?
随机数生成:PID + 随机数(+ 哈希?)
inode 耗尽
项目详情
pickle-warehouse-0.1.1.tar.gz 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | aa15f6140cbe8394a02cb7f56d9915b1bc5dcacf1da32fcba9294e0d405b775e |
|
MD5 | 457fe200b8108a4596451afe9675dea0 |
|
BLAKE2b-256 | f675571c3b0cf2f26b3940f81d14e42cd20ad82b999915d70e47192bd82744f7 |