0
点赞
收藏
分享

微信扫一扫

dbm数据库详解【flask】【dbm.gun解决】

曾宝月 2022-03-12 阅读 63

DBM

dbm数据库是利用简单的字符串值作为键来访问包含字符串的记录。

开发遇到的问题

之前的项目开发使用的dbm.gnu类型,而这个类型在Linux系统下可以正常使用,在windows系统下无法使用,在网上查阅了很多质料也没有解决,也遇到有人发帖求助,始终没有实质性的解决方法。
假设dbm.gun不能在window下运行的话,那么方法只有这个,就是转化为windows可以运行的文件。

识别dbm类型

whichdb() 方法会识别数据库

import dbm

print(dbm.whichdb('config'))

在这里插入图片描述
发现是dbm,gun
如果我们尝试打开这个文件,会报以下错误

dbm.error: db type is dbm.gnu, but the module is not available

使用Linux尝试解决

传入虚拟机里的linux系统,引入包,发现,可以正常读取dbm数据库。
在这里插入图片描述
获取到以下完整数据库内容:

b'btn_2' = b'\xe8\xb5\x9b\xe4\xba\x8b\xe8\xaf\xb4\xe6\x98\x8e|http://btwl.zhimaju.com/html/article_details.html?v=1634109894&id=1c3bc326-373a-4439-8dff-8a9b4e63a713'
b'past_matchs' = b',2021|\xe5\x8c\x85\xe5\xa4\xb4\xe5\xb8\x82\xe7\xac\xac\xe4\xba\x8c\xe7\x95\x8c\xe6\x96\x87\xe5\x8c\x96\xe6\x97\x85\xe6\xb8\xb8\xe5\x88\x9b\xe6\x84\x8f\xe4\xbd\x9c\xe5\x93\x81\xe5\xa4\xa7\xe8\xb5\x9b'
b'pw_nums' = b'3'
b'btn_3' = b'\xe5\xa4\xa7\xe8\xb5\x9b\xe6\x88\x90\xe7\xbb\xa9|/result'
b'btn_1' = b'\xe4\xb8\x8a\xe4\xbc\xa0\xe4\xbd\x9c\xe5\x93\x81|/new_post'
b'match_name' = b'\xe5\x8c\x85\xe5\xa4\xb4\xe5\xb8\x82\xe7\xac\xac\xe4\xba\x8c\xe7\x95\x8c\xe6\x96\x87\xe5\x8c\x96\xe6\x97\x85\xe6\xb8\xb8\xe5\x88\x9b\xe6\x84\x8f\xe4\xbd\x9c\xe5\x93\x81\xe5\xa4\xa7\xe8\xb5\x9b'
b'upload' = b'false'
b'btn_4' = b'\xe5\xbe\x80\xe6\x9c\x9f\xe5\x9b\x9e\xe9\xa1\xbe|/past'
b'time' = b'2'
b'match' = b'2021'
b'time_3_posts' = b''
b'btn_5' = b'\xe8\xaf\x84\xe5\xa7\x94\xe5\x85\xa5\xe5\x8f\xa3|/admin'
b'time_2_posts' = b'200'

import dbm
db_config=dbm.open('config','c')

k = db_config.firstkey()
while k != None:
    print(k)
    k = db_config.nextkey(k)
print("__________________")
if db_config is not None:
    for key in db_config.keys():
        print('{} = {}'.format(key, db_config[key]))
else:
    print('dbm object is None!')
b'btn_2'
b'past_matchs'
b'pw_nums'
b'btn_3'
b'btn_1'
b'match_name'
b'upload'
b'btn_4'
b'time'
b'match'
b'time_3_posts'
b'btn_5'
b'time_2_posts'
keys(): [b'btn_2', b'past_matchs', b'pw_nums', b'btn_3', b'btn_1', b'match_name', b'upload', b'btn_4', b'time', b'match', b'time_3_posts', b'btn_5', b'time_2_posts']
b'btn_2' b'\xe8\xb5\x9b\xe4\xba\x8b\xe8\xaf\xb4\xe6\x98\x8e|http://btwl.zhimaju.com/html/article_details.html?v=1634109894&id=1c3bc326-373a-4439-8dff-8a9b4e63a713'
b'past_matchs' b',2021|\xe5\x8c\x85\xe5\xa4\xb4\xe5\xb8\x82\xe7\xac\xac\xe4\xba\x8c\xe7\x95\x8c\xe6\x96\x87\xe5\x8c\x96\xe6\x97\x85\xe6\xb8\xb8\xe5\x88\x9b\xe6\x84\x8f\xe4\xbd\x9c\xe5\x93\x81\xe5\xa4\xa7\xe8\xb5\x9b'
b'pw_nums' b'3'
b'btn_3' b'\xe5\xa4\xa7\xe8\xb5\x9b\xe6\x88\x90\xe7\xbb\xa9|/result'
b'btn_1' b'\xe4\xb8\x8a\xe4\xbc\xa0\xe4\xbd\x9c\xe5\x93\x81|/new_post'
b'match_name' b'\xe5\x8c\x85\xe5\xa4\xb4\xe5\xb8\x82\xe7\xac\xac\xe4\xba\x8c\xe7\x95\x8c\xe6\x96\x87\xe5\x8c\x96\xe6\x97\x85\xe6\xb8\xb8\xe5\x88\x9b\xe6\x84\x8f\xe4\xbd\x9c\xe5\x93\x81\xe5\xa4\xa7\xe8\xb5\x9b'
b'upload' b'false'
b'btn_4' b'\xe5\xbe\x80\xe6\x9c\x9f\xe5\x9b\x9e\xe9\xa1\xbe|/past'
b'time' b'2'
b'match' b'2021'
b'time_3_posts' b''
b'btn_5' b'\xe8\xaf\x84\xe5\xa7\x94\xe5\x85\xa5\xe5\x8f\xa3|/admin'
b'time_2_posts' b'200'

Process finished with exit code 0

举报

相关推荐

0 条评论