我正在尝试访问由 Chrome 存储 indexeddb 生成的 leveldb。我得到键和值。但它们要么采用未知的编码 - 我已经尝试了很多方法来检测它们 - 或者它们以某种方式被扰乱。
import plyvel
db = plyvel.DB(dirname, comparator=cmp, comparator_name="idb_cmp1")
for key, value in db:
print(key)
print(value)
我不介意 key 是否按描述的随机顺序 here 。但如果能以可读的方式获取键和值就好了。我也不处理 leveldb 中的二进制数据。
我在 python 中使用 plyvel 来迭代数据库。这个答案可能相关:LevelDB C iterator
最佳答案
您可以通过将完全相同的比较器名称传递给 plyvel 中的自定义比较器来伪造它。该比较器的工作方式可能与最初用于创建数据库的比较器不同。我想这会让你克服第一个障碍。
但是由于leveldb不提供只读操作模式,因此在您读取数据库时可能会启动后台线程来进行一些压缩。由于比较器发生错误,这可能会导致数据丢失和数据库损坏。
关于python - 如果没有适当的比较器,您可以“读取” leveldb 数据吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41587347/