dbm数据库详解【flask】【dbm.gun解决】
DBM
dbm數據庫是利用簡單的字符串值作為鍵來訪問包含字符串的記錄。
開發遇到的問題
之前的項目開發使用的dbm.gnu類型,而這個類型在Linux系統下可以正常使用,在windows系統下無法使用,在網上查閱了很多質料也沒有解決,也遇到有人發帖求助,始終沒有實質性的解決方法。
假設dbm.gun不能在window下運行的話,那么方法只有這個,就是轉化為windows可以運行的文件。
識別dbm類型
whichdb() 方法會識別數據庫
import dbmprint(dbm.whichdb('config'))
發現是dbm,gun
如果我們嘗試打開這個文件,會報以下錯誤
使用Linux嘗試解決
傳入虛擬機里的linux系統,引入包,發現,可以正常讀取dbm數據庫。
獲取到以下完整數據庫內容:
在Linux系統獲取數據庫內容代碼:
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'我們拿到了dbm.gun里面的完整數據庫內容,下一步就是清洗為dbm.dumb
轉換代碼
import dbm with dbm.open('config', 'c') as db:db['btn_2'] = '賽事說明|http://btwl.zhimaju.com/html/article_details.html?v=1634109894&id=1c3bc326-373a-4439-8dff-8a9b4e63a713'db['past_matchs'] = ',2021|包頭市第二界文化旅游創意作品大賽'db['pw_nums'] = '3'db['btn_3'] = '大賽成績|/result'db['btn_1'] = '上傳作品|/new_post'db['match_name'] = '包頭市第二界文化旅游創意作品大賽'db['upload'] = 'false'db['btn_4'] = '往期回顧|/past'db['time'] = '2'db['match'] = '2021'db['time_3_posts'] = ''db['btn_5'] = '評委入口|/admin'db['time_2_posts'] = '200'運行這個py文件,生成三個dbm文件:
替換
將這三個文件,替換原來的dbm.gun文件,運行項目,完美解決了,win不兼容dbm.gnu的問題。
注意:dbm.gun與dbm.dumb文件是不兼容的,倆種類型差別很大,不能相互通用。
值
含意
‘r’
以只讀方式打開現有數據庫(默認)
‘w’
以讀寫方式打開現有數據庫
‘c’
以讀寫方式打開數據庫,如果不存在則創建它
‘n’
始終創建一個新的空數據庫,以讀寫方式打開
上面的rwcn是可選的 flag 參數。dbm.open()里面的flag參數可改變的。
總結
以上是生活随笔為你收集整理的dbm数据库详解【flask】【dbm.gun解决】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 手机拍照参数的调整
- 下一篇: linux cmake编译源码,linu