如果没有适当的比较器,您能否*读取* leveldb数据?

Dej*_*Dej 5 python google-chrome python-2.7 indexeddb leveldb

我正在尝试访问Chrome存储indexeddbs生成的leveldbs。我得到键和值。但是它们要么以未知的编码-我尝试了多种方法来检测它们-要么它们以某种方式被加扰。

import plyvel    
db = plyvel.DB(dirname, comparator=cmp, comparator_name="idb_cmp1")
for key, value in db:
    print(key) 
    print(value)
Run Code Online (Sandbox Code Playgroud)

我不介意密钥是否按此处所述随机排列。但是,以可读的方式获取键和值会很好。我也不在leveldb中处理二进制数据。

我在python中使用plyvel遍历数据库。可能与以下答案有关:LevelDB C迭代器

wou*_*lee 1

您可以通过将完全相同的比较器名称传递给 plyvel 中的自定义比较器来伪造它。该比较器的工作方式可能与最初用于创建数据库的比较器不同。我想这会让你克服第一个障碍。

但由于 leveldb 不提供只读操作模式,因此在您读取数据库时可能会启动后台线程来进行一些压缩。由于比较器发生故障,这可能会导致数据丢失和数据库损坏。