跳转到主要内容

轻松将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))]

它还具有典型的字典方法,如 keysvaluesitemsupdate

何时使用

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 (4.8 kB 查看哈希)

由 ... 支持