new_data.py 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. """ 旧版数据库导入为新版数据库 """
  2. """ 新版加入了mp3 """
  3. import sqlite3
  4. from core.aliyun import tls
  5. import traceback
  6. first = sqlite3.connect("high_school.db")
  7. new = sqlite3.connect("high_school.db")
  8. new.execute('''CREATE TABLE IF NOT EXISTS Word (
  9. id INTEGER PRIMARY KEY AUTOINCREMENT, -- 编码
  10. box INTEGER NOT NULL DEFAULT 1 CHECK (box < 6 and box > 0),
  11. word TEXT NOT NULL, -- 单词
  12. part TEXT NOT NULL, -- 词性
  13. english TEXT NOT NULL, -- 英文注释
  14. chinese TEXT NOT NULL, -- 中文注释
  15. eg TEXT, -- 例句
  16. mp3 TEXT -- mp3 单词音频
  17. )''')
  18. res = first.execute("SELECT MIN(ID), MAX(id) FROM main.Word;")
  19. min_id, max_id = res.fetchone()
  20. res.close()
  21. error = []
  22. for word_id in range(min_id, max_id + 1):
  23. res = first.execute(f"SELECT word, part, english, chinese, eg FROM main.Word WHERE id={word_id};")
  24. word: "list | None" = res.fetchone()
  25. res.close()
  26. if word is None:
  27. continue
  28. try:
  29. word = [i.replace("'", "''") for i in word]
  30. res = tls.start(word[0])
  31. if not res.success:
  32. raise Exception
  33. values = f"(1, '{word[0]}', '{word[1]}', '{word[2]}', '{word[3]}', '{word[4]}', '{res.mp3}')"
  34. res = new.execute(f"INSERT INTO main.Word(box, word, part, english, chinese, eg, mp3) VALUES {values};")
  35. res.close()
  36. new.commit()
  37. except Exception as e:
  38. print(f"Error: {word[0]} {word_id}")
  39. error.append((word[0], word_id))
  40. traceback.print_exception(e)