Python的levelDB实现——实习笔记
来源:互联网 发布:淘宝直播点赞要钱吗 编辑:程序博客网 时间:2024/06/06 06:57
实习做的最靠谱的东西,不过只是其中一个部分,这代码算是公司的吧(之前的软考不是白考的,不过想想也知道~),所以没有贴出来全部,不过他们也说了要放到github上,只是时间问题,- -我个人觉得是我代码太丑了,所以他们就没好意思放上去。。。。
确实写的很丑,风格丑!!!!不是效率低。。。感觉Python的风格和Java的是两个极端,被Java先入为主了,所以Python的风格就很差劲。。。
levelDB会在本地创建一个文件目录,个人觉得还是比较nice的一种嵌入式KV数据库,不过,据说最近出了一个LMDB,堪称LevelDB杀手,貌似很萌的样子,看了一下实现过程,对于我所应用的程序,完全没有影响,而且和levelDB一样也是嵌入式、开源、有Python源码,可以很好的移植到我的脚本中,但时间问题,就不去具体实现了吧。
#---------------------------- DB ----------------------------------------class LevelDB: """ 元数据的操作 """ def __init__(self, SRC_DIR, DBDIR, OverWrite=False): self.SRC_DIR = SRC_DIR self.DBDIR = DBDIR if OverWrite: self.ClearDBFile() if os.access(os.path.dirname(self.DBDIR), os.W_OK): self.levDB = leveldb.LevelDB(self.DBDIR) else: LOGGER.error(self.DBDIR.join([" Permission Denied! ", " Need Write Access!"])) LOGGER.error("LevelDB server run failed!\n") self.levDB = None def ClearDBFile(self): for root, dirs, files in os.walk(self.DBDIR, topdown=False): for name in files: os.remove(os.path.join(root, name)) for name in dirs: os.rmdir(os.path.join(root, name)) def reLoadLevelDB(self): self.levDB = leveldb.LevelDB(self.DBDIR) def getFileFromSQL(self, fapath): if self.levDB is None: return LOGGER.debug("".join(["getFileFromSQL: ", fapath[self.SRC_DIR.__len__():]])) try: resObj = self.levDB.Get(fapath[self.SRC_DIR.__len__():]) except KeyError, ker: LOGGER.debug(fapath[self.SRC_DIR.__len__():] + " not found!") return None except UnicodeEncodeError, ueer: LOGGER.debug("".join(["Chinese character coding file: ", fapath[self.SRC_DIR.__len__():]])) try: resObj = self.levDB.Get(fapath[self.SRC_DIR.__len__():].encode("utf-8")) except KeyError, ker: return None return resObj def insertFileToSQL(self, fpath): if self.levDB is None: return LOGGER.debug( "".join(["File.Put: key: ", fpath[self.SRC_DIR.__len__():], " value: ", getLastModifyTime(fpath)])) try: self.levDB.Put(fpath[self.SRC_DIR.__len__():], getLastModifyTime(fpath)) except UnicodeEncodeError, ueer: self.levDB.Put(fpath[self.SRC_DIR.__len__():].encode("utf-8"), getLastModifyTime(fpath)) def insertPathToSQL(self, fpath): if self.levDB is None: return LOGGER.debug("".join(["Path.Put: key: ", fpath[self.SRC_DIR.__len__():], " value: ok"])) try: self.levDB.Put(fpath[self.SRC_DIR.__len__():], "1") except UnicodeEncodeError, ueer: self.levDB.Put(fpath[self.SRC_DIR.__len__():].encode("utf-8"), "1") def getPathFromSQL(self, fpath): if self.levDB is None: return False LOGGER.debug("".join(["getPathFromSQL: ", fpath[self.SRC_DIR.__len__():]])) try: return self.levDB.Get(fpath[self.SRC_DIR.__len__():]) except KeyError, ker: LOGGER.debug(fpath[self.SRC_DIR.__len__():] + " not found!") return False except UnicodeEncodeError, ueer: LOGGER.debug("".join(["Chinese character coding file: ", fpath[self.SRC_DIR.__len__():]])) try: return self.levDB.Get(fpath[self.SRC_DIR.__len__():].encode("utf-8")) except KeyError, ker: return False
0 0
- Python的levelDB实现——实习笔记
- levelDB—初识levelDB
- leveldb代码阅读(3)——Leveldb 实现原理
- LevelDB的实现原理
- LevelDB 学习笔记 —— utils
- levelDB学习笔记 —— table
- levelDB学习笔记——Version
- Python leveldb数据库 把txt的数据存入到leveldb
- python leveldb
- Queue的简单运用——实习笔记
- 百度实习笔记——数据库的分库分表,读写分离
- leveldb代码阅读(11)——levelDB生成的文件
- windows下编译python的levelDB库
- google的levelDB实现原理分析
- leveldb之SkipList的简单实现
- google的levelDB实现原理分析
- JAVA实习笔记——Servlet
- LevelDB源码阅读(1)—— SSTable的生成
- 关于hibernate的lazy、inverse和fetch属性的测试
- Edittext监听动态改变
- mysql密码忘记,怎么办?
- Android 自定义View 画渐变色
- Join用法,HQL的方法,Hibernate中的fetch
- Python的levelDB实现——实习笔记
- Netty4学习笔记(4)-- ByteBuf和设计模式
- 八大疯狂的HTML5 Canvas及WebGL动画效果
- jquery-validate remote验证,返回不同的消息内容
- 数字问题
- 6岁女孩重度烫伤追踪:伤口恢复不错登门致谢
- ireport制作小技巧
- jQuery插件的开发
- Oracle获取系统时间及格式化