如题
我电脑上有个软件存储数据用的是 IndexedDB , 文件名后缀是 .ldb (LevelDB), 主要是我想把我以前记录的数据全部拿出来, 方便总结。 软件自身没有我想要总结功能
但是我用 Python3.7+ 和 leveldb 库读取 *.leveldb 目录的时候一直报错
>>> import leveldb >>> db = leveldb.LevelDB('****.leveldb') Traceback (most recent call last): File "<stdin>", line 1, in <module> leveldb.LevelDBError: Invalid argument: idb_cmp1 does not match existing comparator : leveldb.BytewiseComparator
用 plyvel 库也是同样的错误
>>> import plyvel >>> db = plyvel.DB('****.leveldb') Traceback (most recent call last): File "<stdin>", line 1, in <module> File "plyvel/_plyvel.pyx", line 247, in plyvel._plyvel.DB.__init__ File "plyvel/_plyvel.pyx", line 94, in plyvel._plyvel.raise_for_status plyvel._plyvel.Error: b'Invalid argument: idb_cmp1 does not match existing comparator : leveldb.BytewiseComparator'
有没有大佬知道怎么解决?
1 alphanow 2022-01-12 16:59:38 +08:00 ![]() 你这个软件不是 Chrome 本身就是一个基于 Chromium 或者 Electron 开发的软件,因为 idb_cmp1 是 Chrome 用的 comparator 。你需要自己实现一个 comparator 。 ``` plyvel.DB(name, comparator=func, comparator_name="idb_cmp1") ``` |
2 Deteriorator OP @alphanow 有没有 comparator 实的例子? 不明白这是啥 |
3 alphanow 2022-01-12 17:27:31 +08:00 理论上你要实现和 Chromium 源代码一致的 comparator ,但如果是只读取数据的话,随便什么比较函数都行: def func(a,b): return 1 if a > b else ( -1 if a < b else 0) |
4 Deteriorator OP @alphanow 多谢,我试试 |