快速了解python leveldb


Posted in Python onJanuary 18, 2018

本文主要是对leveldb进行一个简单的介绍及使用Python语言对其进行操作的代码示例,具体如下。

leveldb 是google实现的一种非常高效的key-value数据库。key-value数据库中,redis是比较知名且好用的,但它是一个内存数据库,而leveldb只需要少量的内存,但速度依然很快,美中不足的是,没有网络服务封装,这样一来就只能单机使用,如果你实力足够强,也可以自己封装一个。

python版本的leveldb安装很简单,pip install leveldb

接下来重点介绍使用方法。

一 、 读写

def single_operate(): 
 db = leveldb.LevelDB('./data') 
 db.Put('foo','东升') 
 print db.Get('foo') 
 db.Delete('foo') 
 print db.Get('foo')

新建数据库很方便,如果这个目录已经存在就会直接打开,没有的话就会新建。示例中给出了添加,删除,和获取的方法,注意,是没有修改操作的。

二 、 遍历

如何遍历数据呢,也非常方便,你可以指定开始的key和结束的key,也可以指定顺序,是否带value

def test_iter(): 
 db = leveldb.LevelDB('./data') 
 for i in xrange(10): 
  db.Put(str(i), 'string_%s' % i) 
 print list(db.RangeIter(key_from = '2', key_to = '5')) 
 print list(db.RangeIter(key_from = '2', key_to = '5',reverse=True))
def iter_key_values(): 
 db = leveldb.LevelDB('./data') 
 for i in xrange(10): 
  db.Put(str(i), 'string_%s' % i) 
 keys = list(db.RangeIter(include_value = False)) 
 print keys 
 
 keys_values = list(db.RangeIter()) 
 print keys_values

三、 批量操作

如果我对数据库有一大批操作,每一次都和数据库进行交互,其实挺浪费性能的,因此像mongodb,redis都提供了批量操作的方法,leveldb也是如此。下面是一个清空数据库的例子

def clear_db(): 
 db = leveldb.LevelDB('./data') 
 b = leveldb.WriteBatch() 
 for k in db.RangeIter(include_value = False, reverse = True): 
  b.Delete(k) 
 db.Write(b)

b.Delete(k)并没有真正的删除数据,而是在db.Write(b)时执行所有的操作

四、 快照

创建快照非常简单,美中不足的是,再次加载数据库以后,没有方法找到之前创建的快照,难道已关闭这些快照就都不见了,这这样的快照还有什么意思呢,也许只有python版本的快照是这样的吧

def test_snapshot(): 
 db = leveldb.LevelDB('./data') 
 db.Put('foo','s1') 
 s1 = db.CreateSnapshot() 
 db.Put('foo','s2') 
 s2 = db.CreateSnapshot() 
 
 print db.Get('foo') 
 print s1.Get('foo') 
 print s2.Get('foo')

总结

以上就是本文关于快速了解python leveldb的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

Python 相关文章推荐
python字符串排序方法
Aug 29 Python
Python中的lstrip()方法使用简介
May 19 Python
Python实现求笛卡尔乘积的方法
Sep 16 Python
Python2.7 实现引入自己写的类方法
Apr 29 Python
删除python pandas.DataFrame 的多重index实例
Jun 08 Python
Python实现 版本号对比功能的实例代码
Apr 18 Python
使用虚拟环境打包python为exe 文件的方法
Aug 29 Python
python3 字符串知识点学习笔记
Feb 08 Python
基于pytorch中的Sequential用法说明
Jun 24 Python
Python collections模块的使用方法
Oct 09 Python
python中_del_还原数据的方法
Dec 09 Python
如何利用Python matplotlib绘制雷达图
Dec 21 Python
Python实现动态图解析、合成与倒放
Jan 18 #Python
Python基于matplotlib实现绘制三维图形功能示例
Jan 18 #Python
Python实现在tkinter中使用matplotlib绘制图形的方法示例
Jan 18 #Python
python中requests和https使用简单示例
Jan 18 #Python
Python使用matplotlib实现绘制自定义图形功能示例
Jan 18 #Python
Python基于csv模块实现读取与写入csv数据的方法
Jan 18 #Python
python将字典内容存入mysql实例代码
Jan 18 #Python
You might like
Symfony模板的快捷变量用法实例
2016/03/17 PHP
Yii实现简单分页的方法
2016/04/29 PHP
PHP curl 或 file_get_contents 获取需要授权页面的方法
2017/05/05 PHP
zeroclipboard复制到剪切板的flash
2010/08/04 Javascript
JQuery 应用 JQuery.groupTable.js
2010/12/15 Javascript
基于jquery自定义的漂亮单选按钮RadioButton
2013/11/19 Javascript
JavaScript不使用prototype和new实现继承机制
2014/12/29 Javascript
jquery通过closest选择器修改上级元素的方法
2015/03/17 Javascript
分享我的jquery实现下拉菜单心的
2015/11/29 Javascript
Angularjs中使用轮播图指令swiper
2017/05/30 Javascript
react-router4 嵌套路由的使用方法
2017/07/24 Javascript
详解nodeJs文件系统(fs)与流(stream)
2018/01/24 NodeJs
Sublime Text3 配置 NodeJs 环境的方法
2020/05/20 NodeJs
基于vue实现微博三方登录流程解析
2020/11/04 Javascript
[00:33]DOTA2上海特级锦标赛 CDEC战队宣传片
2016/03/04 DOTA
[30:37]【全国守擂赛】第三周擂主赛 Dark Knight vs. Leopard Gaming
2020/05/04 DOTA
Python与Redis的连接教程
2015/04/22 Python
Python正则表达式完全指南
2017/05/25 Python
Python无损音乐搜索引擎实现代码
2018/02/02 Python
基于python二叉树的构造和打印例子
2019/08/09 Python
Python re正则表达式元字符分组()用法分享
2020/02/10 Python
python deque模块简单使用代码实例
2020/03/12 Python
Python selenium爬取微博数据代码实例
2020/05/22 Python
Python基于unittest实现测试用例执行
2020/11/25 Python
CSS3实现文字描边的2种方法(小结)
2020/02/14 HTML / CSS
html5拖曳操作 HTML5实现网页元素的拖放操作
2013/01/02 HTML / CSS
德国在线香料制造商:Gewürzland
2020/03/10 全球购物
教师的实习鉴定
2013/12/15 职场文书
社区学雷锋活动策划方案
2014/01/30 职场文书
简历中个人自我评价分享
2014/03/15 职场文书
合伙经营协议书
2014/04/18 职场文书
2014年城管个人工作总结
2014/12/08 职场文书
2015年度质量工作总结报告
2015/04/27 职场文书
pycharm2021激活码使用教程(永久激活亲测可用)
2021/03/30 Python
解决python3安装pandas出错的问题
2021/05/20 Python
MySQL深度分页(千万级数据量如何快速分页)
2021/07/25 MySQL