longcw / youdao

基于python 的命令行下查词工具,使用有道api
https://pypi.python.org/pypi/youdao
192 stars 47 forks source link

AttributeError: 'SqliteDatabase' object has no attribute 'drop_table' #11

Open shiningdracon opened 6 years ago

shiningdracon commented 6 years ago

Ubuntu 16.04 LTS

$yd -s /path/to/my/dict

Traceback (most recent call last): File "/usr/local/bin/yd", line 9, in load_entry_point('youdao==0.3.2', 'console_scripts', 'yd')() File "/usr/local/lib/python2.7/dist-packages/youdao-0.3.2-py2.7-linux-x86_64.egg/youdao/main.py", line 165, in main config.prepare() File "/usr/local/lib/python2.7/dist-packages/youdao-0.3.2-py2.7-linux-x86_64.egg/youdao/config.py", line 55, in prepare update() File "/usr/local/lib/python2.7/dist-packages/youdao-0.3.2-py2.7-linux-x86_64.egg/youdao/config.py", line 40, in update db.drop_table(Word, fail_silently=True) AttributeError: 'SqliteDatabase' object has no attribute 'drop_table'

Workaround: 由于是全新安装,没有旧 db,所以: 修改 "/usr/local/lib/python2.7/dist-packages/youdao-0.3.2-py2.7-linux-x86_64.egg/youdao/config.py" 注释掉 db.drop_table(Word, fail_silently=True) 这一行

yangkghjh commented 6 years ago

Same problem

F35X70 commented 6 years ago

index 727bce2..fb0f431 100644
--- a/youdao/config.py
+++ b/youdao/config.py
@@ -37,7 +37,8 @@ def update():
     if config.get('version', '0') < '0.2.0':
         # silent_remove(DB_DIR)
         from model import db, Word
-        db.drop_table(Word, fail_silently=True)
+        if os.path.exists(DB_DIR):
+            db.drop_table(Word, fail_silently=True)
         Word.create_table()