2016-02-22 35 views
2

我想刪除一個lmdb數據庫。以下命令在txn.drop(db_name)行中命中'typerror:invalid type'。使用python刪除lmdb數據庫

import lmdb 
def kill_db(db_name): 
    print('ABOUT TO DELETE DB '+str(db_name)+'!!!!') 
    raw_input('press enter to continue or ctrl-C to not') 
    env = lmdb.open(db_name, readonly=False) 
    txn = lmdb.Transaction(env) 
    txn.drop(db_name) 

爲什麼會發生這種情況的任何線索? 我是lmdb的新手(正如你可能已經猜到的),所以要溫柔。

+0

TypeError的其餘部分是什麼?它應該說明它的期望和收到的內容。 – wpercy

+0

關於刪除數據庫testdb.test !!!! 按回車鍵繼續,或者按Ctrl-C不 回溯(最近最後一次通話): 文件 「lmdb_utils.py」,線路215,在 kill_db( 'testdb.test') 文件 「lmdb_utils.py」第198行,在kill_db txn.drop(db_name,delete = True) TypeError:無效類型 –

回答

1

也許這可以幫助你:

import lmdb 
def kill_db(db_name): 
    print('ABOUT TO DELETE DB '+str(db_name)+'!!!!') 
    raw_input('press enter to continue or ctrl-C to not') 
    in_db = lmdb.open(db_name) 
    with in_db.begin(write=True) as in_txn: 
     db = in_db.open_db() 
     in_txn.drop(db) 
     print in_txn.stat() 

您可以在這裏找到一個文件: https://lmdb.readthedocs.org/en/release/

另一種方式,如果你想從你的硬盤完全刪除LMDB,你也可以只使用:

import os 
import shutil 
if os.path.exists(db_name): 
    shutil.rmtree(db_name) 
+0

謝謝,我沒有注意到數據庫只是居住在本地目錄。我沒有嘗試in_txn.drop –