快速了解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之PyMongo使用总结
May 26 Python
基于Python对象引用、可变性和垃圾回收详解
Aug 21 Python
Python实现的redis分布式锁功能示例
May 29 Python
python批量修改文件编码格式的方法
May 31 Python
python数据批量写入ScrolledText的优化方法
Oct 11 Python
python 判断参数为Nonetype类型或空的实例
Oct 30 Python
删除DataFrame中值全为NaN或者包含有NaN的列或行方法
Nov 06 Python
Python 计算任意两向量之间的夹角方法
Jul 05 Python
利用Python实现某OA系统的自动定位功能
May 27 Python
Python 代码调试技巧示例代码
Aug 11 Python
Django配置跨域并开发测试接口
Nov 04 Python
python将图片转为矢量图的方法步骤
Mar 30 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
php 网上商城促销设计实例代码
2012/02/17 PHP
PHP调用C#开发的dll类库方法
2014/07/28 PHP
实例讲解YII2中多表关联的使用方法
2017/07/21 PHP
yii2.0整合阿里云oss上传单个文件的示例
2017/09/19 PHP
jquery的Theme和Theme Switcher使用小结
2010/09/08 Javascript
用jquery写的一个万年历(自写)
2014/01/20 Javascript
理解JavaScript的变量的入门教程
2015/07/07 Javascript
纯css实现窗户玻璃雨滴逼真效果
2015/08/23 Javascript
Jquery操作cookie记住用户名
2016/03/29 Javascript
js获取Html元素的实际宽度高度的方法
2016/05/19 Javascript
浅谈JavaScript的自动垃圾收集机制
2016/12/15 Javascript
使用vue.js实现checkbox的全选和多个的删除功能
2017/02/17 Javascript
在 Node.js 中使用原生 ES 模块方法解析
2017/09/19 Javascript
vue升级之路之vue-router的使用教程
2018/08/14 Javascript
简单两步使用node发送qq邮件的方法
2019/03/01 Javascript
一篇文章带你搞懂Vue虚拟Dom与diff算法
2020/08/25 Javascript
解决Can't find variable: SockJS vue项目的问题
2020/09/22 Javascript
[51:07]VGJ.S vs Pain 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
python基于mysql实现的简单队列以及跨进程锁实例详解
2014/07/07 Python
Python使用matplotlib实现在坐标系中画一个矩形的方法
2015/05/20 Python
Python浅复制中对象生存周期实例分析
2018/04/02 Python
python学习--使用QQ邮箱发送邮件代码实例
2019/04/16 Python
Python 保持登录状态进行接口测试的方法示例
2019/08/06 Python
python脚本之一键移动自定格式文件方法实例
2019/09/02 Python
使用python turtle画高达
2020/01/19 Python
python使用信号量动态更新配置文件的操作
2020/04/01 Python
Jupyter notebook无法导入第三方模块的解决方式
2020/04/15 Python
基于Python词云分析政府工作报告关键词
2020/06/02 Python
python os.rename实例用法详解
2020/12/06 Python
用CSS3实现无限循环的无缝滚动的示例代码
2017/11/01 HTML / CSS
超市实习总结自我鉴定
2013/09/19 职场文书
绘画设计学生的个人自我评价
2013/09/20 职场文书
最经典的商业地产项目广告词
2014/03/13 职场文书
电子商务助理求职自荐信
2014/04/10 职场文书
2014年文艺部工作总结
2014/11/17 职场文书
考教师资格证不要错过的4个最佳时机
2019/07/17 职场文书