快速了解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中如何写控制台进度条的整理
Mar 07 Python
Python Flask前后端Ajax交互的方法示例
Jul 31 Python
python tornado微信开发入门代码
Aug 24 Python
对python Tkinter Text的用法详解
Oct 11 Python
Python批量生成特定尺寸图片及图画任意文字的实例
Jan 30 Python
一文了解Python并发编程的工程实现方法
May 31 Python
利用python实现短信和电话提醒功能的例子
Aug 08 Python
PyTorch笔记之scatter()函数的使用
Feb 12 Python
在pytorch中实现只让指定变量向后传播梯度
Feb 29 Python
Pytorch学习之torch用法----比较操作(Comparison Ops)
Jun 28 Python
Python 连接 MySQL 的几种方法
Sep 09 Python
python爬虫泛滥的解决方法详解
Nov 25 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
一个简单的自动发送邮件系统(二)
2006/10/09 PHP
php下图片文字混合水印与缩略图实现代码
2009/12/11 PHP
PHP通过API获取手机号码归属地
2015/05/28 PHP
简要剖析PHP的Yii框架的组件化机制的基本知识
2016/03/17 PHP
PHP实现UTF8二进制及明文字符串的转化功能示例
2017/11/20 PHP
PHP设计模式之工厂方法设计模式实例分析
2018/04/25 PHP
PHP之认识(二)关于Traits的用法详解
2019/04/11 PHP
php简单检测404页面的方法示例
2019/08/23 PHP
用jscript启动sqlserver
2007/06/21 Javascript
YUI 读码日记之 YAHOO.lang.is*
2008/03/22 Javascript
jquery的颜色选择插件实例代码
2008/10/02 Javascript
JS+CSS实现仿触屏手机拨号盘界面及功能模拟完整实例
2015/05/16 Javascript
js如何打印object对象
2015/10/16 Javascript
JavaScript中关于iframe滚动条的去除和保留
2016/11/17 Javascript
利用vue写todolist单页应用
2016/12/15 Javascript
微信小程序 密码输入(源码下载)
2017/06/27 Javascript
AngularJS中下拉框的基本用法示例
2017/10/11 Javascript
浅谈Webpack 持久化缓存实践
2018/03/22 Javascript
jQuery实现雪花飘落效果
2020/08/02 jQuery
[19:26]TNC vs EG (BO3)
2018/06/07 DOTA
[04:29]【TI9采访】OG.N0tail在胜者组决赛后接受采访
2019/08/25 DOTA
Python中操作MySQL入门实例
2015/02/08 Python
Python的Flask框架中实现登录用户的个人资料和头像的教程
2015/04/20 Python
详解python爬虫系列之初识爬虫
2019/04/06 Python
python解释器spython使用及原理解析
2019/08/24 Python
解决windows上安装tensorflow时报错,“DLL load failed: 找不到指定的模块”的问题
2020/05/20 Python
英国在线发型和美容产品商店:Beauty Cutie
2019/04/27 全球购物
澳大利亚窗帘商店:Curtain Wonderland
2019/12/01 全球购物
香港家用健身器材、运动器材及健康美容仪器专门店:FitBoxx
2019/12/05 全球购物
常见的软件开发流程有哪些
2015/11/14 面试题
EJB面试题
2015/07/28 面试题
JVM是一个编译程序还是解释程序
2012/09/11 面试题
零件设计自荐信范文
2013/11/27 职场文书
不打扫卫生检讨书
2014/02/12 职场文书
微信小程序用户授权最佳实践指南
2021/05/08 Javascript
利用Java连接Hadoop进行编程
2022/06/28 Java/Android