You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

48 line
1.4KB

  1. import sqlite3
  2. import os
  3. from modules import cbpi
  4. from 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. print "EXCEPT"
  21. print err
  22. @cbpi.initalizer(order=-9999)
  23. def init(app=None):
  24. with cbpi.app.app_context():
  25. conn = get_db()
  26. cur = conn.cursor()
  27. current_version = None
  28. try:
  29. cur.execute("SELECT max(version) as m FROM schema_info")
  30. m = cur.fetchone()
  31. current_version = m["m"]
  32. except:
  33. pass
  34. result = []
  35. for filename in os.listdir("./update"):
  36. if filename.endswith(".sql"):
  37. d = {"version": int(filename[:filename.index('_')]), "file": filename}
  38. result.append(d)
  39. execute_file(current_version, d)