如题
我电脑上有个软件存储数据用的是 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 1
你这个软件不是 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 多谢,我试试
|