参考:
pickleDB是一个轻量级且简单的键值存储。 它基于Python的simplejson模块,受redis启发。 它获得了BSD三卡许可证的许可。
安装
$ pip install pickledb
pickleDB is Fun
>>> import pickledb
>>> db = pickledb.load('example.db', False)
>>> db.set('key', 'value')
True
>>> db.get('key')
'value'
>>> db.dump()
True
More Information
您可以查看pickleDB的所有命令以及它们在这里执行的操作。
基本命令
https://pythonhosted.org/pickleDB/commands.html
# 结合pickle,维持数据的原样性
#-*- coding:utf-8 -*-
import pickledb
import pickle
db=pickledb.load('example.db',False) # 从文件加载数据库,如果没有会自动创建
data={1:1,2:2,3:3}
db.set('foo',pickle.dumps(data)) # set 设置一个键的字符串值
print(pickle.loads(db.get('foo'))) # get 获取一个键的值
print(type(pickle.loads(db.get('foo')))) # <type 'dict'>
db.dump() # 将数据库从内存保存到example.db
string
#-*- coding:utf-8 -*-
import pickledb
import pickle
db=pickledb.load('example.db',False) # 从文件加载数据库,如果没有会自动创建
data={1:1,2:2}
db.set('foo',data) # set 设置一个键的字符串值
db.set('foo1',data)
print(db.get('foo')) # get 获取一个键的值 {1: 1, 2: 2}
print(db.getall()) # 返回数据库中所有key的列表 # ['foo', 'foo1']
# db.dump() # 将数据库从内存保存到LOAD
db.rem('foo1') # 删除key(foo1)
print(db.get('foo1')) # None
db.append('foo',data) # 在key(foo)增加新值
print(db.get('foo')) # {1: 1, 2: 2}{1: 1, 2: 2}
list
#-*- coding:utf-8 -*-
import pickledb
import pickle
db=pickledb.load('example.db',False) # 加载数据库,如果没有会自动创建
list_=db.lcreate('database') # 创建list
data={1:1,2:2,3:3}
db.ladd('database',data) # 将data 添加到list
print db.lgetall('database') # 获取list中的所有内容 [{1: 1, 2: 2, 3: 3}]
db.lextend('database',data) # 用序列扩展列表
print db.lgetall('database') # [{1: 1, 2: 2, 3: 3}, 1, 2, 3]
print db.lget('database',0) # 在列表中返回一个值 {1: 1, 2: 2, 3: 3}
# db.lrem('database') # 删除一个列表及其所有值
db.lpop('database',-1) # 从列表中删除一个值
print db.lgetall('database') # [{1: 1, 2: 2, 3: 3}, 1, 2]
print(db.llen('database')) # 返回列表的长度 3
db.lappend('database',0,data) # 在列表中添加更多值
print db.lgetall('database') # ['{1: 1, 2: 2, 3: 3}{1: 1, 2: 2, 3: 3}', 1, 2]
print db.getall() # ['database']
dict
#-*- coding:utf-8 -*-
import pickledb
import pickle
db=pickledb.load('example.db',False) # 加载数据库,如果没有会自动创建
dict_=db.dcreate('database') # 创建dict
db.dadd('database',(1,2)) # 将一个键值对添加到字典中,“pair”是一个元组
db.dadd('database',(2,3))
print db.dgetall('database') # 从字典中返回所有键值对 {1: 2, 2: 3}
print db.dget('database',1) # 2 在字典中返回一个key的值
print db.dkeys('database') # 在字典中返回一个key的值 [1,2]
print db.dvals('database') # 返回一个字典的所有value [2,3]
print db.dexists('database',2) # 确定key是否存在 存在返回1,不存在报错
# db.drem('database') # 删除一个字典和所有的对
db.dpop('database',1) # 删除一个字典中的一个key
print db.dgetall('database') # {2: 3}
print db.getall() # ['database']
db.deldb() # 从数据库中删除所有内容
db.dump() # 将数据库从内存保存到文件
命令介绍
LOAD path dump→从文件加载数据库(自0.1起可用)
SET key value→设置一个键的字符串值(自0.1开始可用)
GET key→获取一个键的值(从0.1开始可用)
GETALL→返回数据库中所有密钥的列表(自0.4开始可用)
REM key→删除一个密钥(自0.1开始可用)
APPEND key more→添加更多密钥的值(自0.1.3起可用)
LCREATE name→创建一个列表(从0.1开始可用)
LADD name value→将值添加到列表(自0.1开始可用)
LGETALL name→返回列表中的所有值(自0.1开始可用)
LEXTEND name seq→用序列扩展列表(自0.6开始可用)
LGET name pos→在列表中返回一个值(自0.1开始可用)
LREM name→删除一个列表及其所有值(自0.1开始可用)
LPOP name pos→从列表中删除一个值(自0.1开始可用)
LLEN name→返回列表的长度(自0.6开始可用)
LAPPEND name pos more→在列表中添加更多值(自0.1.3开始可用)
DCREATE name→创建一个字典(自0.2.2开始可用)
DADD name pair→将一个键值对添加到字典中,“pair”是一个元组(自0.2.2开始可用)
DGETALL name→从字典中返回所有键值对(从0.2.2开始可用)
DGET name key→在字典中返回一个键的值(自0.2.2开始可用)
DKEYS name→返回一个字典的所有键(自0.6开始可用)
DVALS name→ 从0.6开始返回一个字典(可用)的所有值)
DEXISTS name key→确定密钥是否存在(自0.6开始可用)
DREM name→删除一个字典和所有的对(自0.2.2以来可用)
DPOP name key→删除一个字典中的一个键值(自0.2.2开始可用)
DELDB→从数据库中删除所有内容(自0.2.1起可用)
DUMP→将数据库从内存保存到LOAD (自0.3开始可用)