Benature/WordReview

导入单词表时报错‘word’,急!请大佬帮忙解决,谢谢!

Chris700819 opened this issue · 3 comments

描述问题
导入单词时报错KeyError at /import/
'word'

复现问题

小小白,下载了这里上传的要你命3000宏版准备上传为列表,因文件重复上传按照#6 进行处理,按照#6 (comment) 修改之后重新上传原单词表,报错‘word’,报错信息我直接从应用程序窗口复制,从“Internal Server Error: /import/”开始复制,网页版报错附截图。求解决,谢谢!

Internal Server Error: /import/
Traceback (most recent call last):
  File "site-packages\django\core\handlers\exception.py", line 34, in inner
  File "site-packages\django\core\handlers\base.py", line 115, in _get_response
  File "site-packages\django\core\handlers\base.py", line 113, in _get_response
  File "C:\Users\Chris\Downloads\WordReview_D\apps\review\views.py", line 54, in import_db
    init_db(BOOK, BOOK_zh, BOOK_abbr, begin_index,
  File "C:\Users\Chris\Downloads\WordReview_D\apps\review\src\init_db.py", line 100, in init_db
    import_word(Review, BookList, Words, df, BOOK)
  File "C:\Users\Chris\Downloads\WordReview_D\apps\review\src\init_db.py", line 29, in import_word
    'word': dr['word'],
  File "C:\Users\Chris\Downloads\WordReview_D\pandas\core\series.py", line 871, in __getitem__
    result = self.index.get_value(self, key)
  File "C:\Users\Chris\Downloads\WordReview_D\pandas\core\indexes\base.py", line 4405, in get_value
    return self._engine.get_value(s, k, tz=getattr(series.dtype, "tz", None))
  File "pandas\_libs\index.pyx", line 80, in pandas._libs.index.IndexEngine.get_value
  File "pandas\_libs\index.pyx", line 90, in pandas._libs.index.IndexEngine.get_value
  File "pandas\_libs\index.pyx", line 138, in pandas._libs.index.IndexEngine.get_loc
  File "pandas\_libs\hashtable_class_helper.pxi", line 1618, in pandas._libs.hashtable.PyObjectHashTable.get_item
  File "pandas\_libs\hashtable_class_helper.pxi", line 1626, in pandas._libs.hashtable.PyObjectHashTable.get_item
KeyError: 'word'
[19/Aug/2020 09:41:44] "POST /import/ HTTP/1.1" 500 151079

截图:(可选)
image
image

操作环境(请提供以下完整数据):

  • 操作系统:windows
  • 使用方式:可执行文件(即在 release 页面下载的)
  • 可执行文件版本(若是):如 0.2.1
  • 数据库类型:sqlite(默认)
  • 浏览器:Chrome

额外信息:(可选)
报错网页 http://localhost:8000/import/ (信息比截图更多,我也不知道能不能打开有没有用)

(首先非常感谢先看了下以前的 issue) 不过这个回复在后面版本已经修正了,所以不需要处理。不过有个疑惑,你是使用可执行文件,怎么修改到源码的呢?


回到你最原始的问题,是重复导入单词书,然后报错UNIQUE constraint failed: books.BOOK吗?如是,分情况讨论

  • 旧的单词书数据要被覆盖:建议删掉数据库文件后重建
  • 旧的单词书数据需要保留:导入设置时候中文名和英文名不要设置的和之前一样就好了(但是这样是新建了另外一个单词书 相当于)
  • 如果说是要把准备导入的合并到之前已经导入的单词书中的话,前端还未做这个支持
    • 可以直接处理数据库进行导入
    • 或者先把导入文件合并在一起,然后删掉数据库文件重建后重新导入合并的数据

说的比较简陋,如果有不理解的地方,明确你的需求后我再进一步说明

(首先非常感谢先看了下以前的 issue) 不过这个回复在后面版本已经修正了,所以不需要处理。不过有个疑惑,你是使用可执行文件,怎么修改到源码的呢?

回到你最原始的问题,是重复导入单词书,然后报错UNIQUE constraint failed: books.BOOK吗?如是,分情况讨论

  • 旧的单词书数据要被覆盖:建议删掉数据库文件后重建

  • 旧的单词书数据需要保留:导入设置时候中文名和英文名不要设置的和之前一样就好了(但是这样是新建了另外一个单词书 相当于)

  • 如果说是要把准备导入的合并到之前已经导入的单词书中的话,前端还未做这个支持

    • 可以直接处理数据库进行导入
    • 或者先把导入文件合并在一起,然后删掉数据库文件重建后重新导入合并的数据

说的比较简陋,如果有不理解的地方,明确你的需求后我再进一步说明

啊抱歉是我没说清楚,是这样:一开始我出现了“UNIQUE constraint failed: books.BOOK_zh”,通过删掉db.sqlite后重新下载解决了问题(即再次点击导入时未出现“UNIQUE constraint failed: books.BOOK_zh”提示),但是相同的提示位置又出现了“word”,我看了issue您说要做#6 (comment) 这个修改,因为我没用源码所以只能尝试用记事本打开apps/review/views.py文件,然后修改53-57 行。修改过后Chrome出现了如上面图片所示的页面,应用程序窗口出现了上面的代码,请问下一步应该怎么做才能让单词导入进去。另:我刚才重新启动了应用程序,出现了如下页面:
image

其中“三千宏”就是我刚才导入失败的中文名,虽然出现了这个字样但是点不进去,请问怎么才能将单词成功导入呢?

  1. 可执行文件不建议修改文件夹内的内容,修改后会发生啥我不晓得了(虽说看起来改的地方不影响使用),建议把代码改回去或者重新解压 release 下载的压缩包使用(当然如果使用源码最好,release 落后了一些版本)

(第一点不用管了,看看就好)

但是相同的提示位置又出现了“word”

  1. 导入 excel 的表头有 word 吗

看报错的话

File "C:\Users\Chris\Downloads\WordReview_D\apps\review\src\init_db.py", line 29, in import_word
    'word': dr['word'],

看起来就是缺了word表头