您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

43 行
1.4KB

  1. import sqlite3
  2. import os
  3. from modules.core.core import cbpi
  4. from modules.core.db import get_db
  5. def execute_file(curernt_version, data):
  6. if curernt_version >= data["version"]:
  7. cbpi._app.logger.info("SKIP DB FILE: %s" % data["file"])
  8. return
  9. try:
  10. with sqlite3.connect("craftbeerpi.db") as conn:
  11. with open('./update/%s' % data["file"], 'r') as f:
  12. d = f.read()
  13. sqlCommands = d.split(";")
  14. cur = conn.cursor()
  15. for s in sqlCommands:
  16. cur.execute(s)
  17. cur.execute("INSERT INTO schema_info (version,filename) values (?,?)", (data["version"], data["file"]))
  18. conn.commit()
  19. except sqlite3.OperationalError as err:
  20. cbpi._app.logger.error(err)
  21. @cbpi.addon.core.initializer(order=-9999)
  22. def init(cbpi):
  23. with cbpi._app.app_context():
  24. conn = get_db()
  25. cur = conn.cursor()
  26. current_version = None
  27. try:
  28. cur.execute("SELECT max(version) as m FROM schema_info")
  29. m = cur.fetchone()
  30. current_version = m["m"]
  31. except:
  32. pass
  33. result = []
  34. for filename in os.listdir("./update"):
  35. if filename.endswith(".sql"):
  36. d = {"version": int(filename[:filename.index('_')]), "file": filename}
  37. result.append(d)
  38. execute_file(current_version, d)