使用Python dbm包创建的数据库无法通过SQLite Viewer打开的问题
问题:dbm创建的文件无法用SQLite Viewer打开
核心原因
dbm和SQLite是完全不同的数据库类型,文件结构完全不兼容:
- dbm是轻量级键值对存储,本质是把数据按字典形式序列化到文件,没有SQL数据库的表结构、索引等关系型特征。
- SQLite是关系型数据库,遵循SQL标准,文件有特定的格式规范,SQLite Viewer只识别这种格式。
所以你用dbm生成的cache文件,根本不是SQLite数据库,自然会被提示“file is not a database”。
解决办法
方式1:用Python脚本读取dbm数据
如果只是想查看dbm里的内容,写个简单脚本就能输出:
import dbm with dbm.open('cache', 'r') as db: # dbm存储的是字节串,需要解码为字符串 for key in db.keys(): decoded_key = key.decode('utf-8') decoded_value = db[key].decode('utf-8') print(f"{decoded_key}: {decoded_value}")
方式2:改用SQLite存储数据
如果需要用SQLite Viewer可视化查看,直接换成SQLite来存储:
import sqlite3 # 连接SQLite数据库(不存在则自动创建) conn = sqlite3.connect('cache.db') cursor = conn.cursor() # 创建存储键值对的表 cursor.execute(''' CREATE TABLE IF NOT EXISTS cache ( key TEXT PRIMARY KEY, value TEXT ) ''') # 插入或更新数据 cursor.execute( 'INSERT OR REPLACE INTO cache (key, value) VALUES (?, ?)', ('www.python.org', 'Python Website') ) # 提交更改并关闭连接 conn.commit() conn.close()
生成的cache.db文件就能直接用SQLite Viewer打开查看了。
内容的提问来源于stack exchange,提问作者Wall Walker
相关产品推荐
相关产品推荐

