data.py 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. import datetime
  2. import sqlite3
  3. import json
  4. class DataAccess:
  5. def __init__(self):
  6. self.conn = sqlite3.connect(":memory:", check_same_thread=False);
  7. c = self.conn.cursor()
  8. c.execute("CREATE TABLE msg(frm TEXT, to0 TEXT, tos TEXT, subject TEXT, content TEXT,createDate timestamp)");
  9. c.execute("CREATE INDEX index_frm ON msg (frm);")
  10. c.execute("CREATE INDEX index_to0 ON msg (to0);")
  11. self.conn.commit()
  12. def store_msg(self, msg):
  13. c = self.conn.cursor()
  14. c.execute("insert into msg values(?,?,?,?,?,?)",
  15. (msg['from'], msg['to'][0], json.dumps(msg['to']), msg['subject'], msg['content'],
  16. datetime.datetime.now()))
  17. self.conn.commit()
  18. def read_from(self, frm):
  19. c = self.conn.cursor()
  20. t = c.execute("select * from msg where frm = ? order by createDate desc limit 100", (frm,))
  21. rs = t.fetchall()
  22. return self.transform(rs)
  23. def read_to(self, to):
  24. c = self.conn.cursor()
  25. t = c.execute("select * from msg where to0 = ? order by createDate desc limit 100", (to,))
  26. rs = t.fetchall()
  27. return self.transform(rs)
  28. def read_all(self):
  29. c = self.conn.cursor()
  30. t = c.execute("select * from msg order by createDate desc limit 100")
  31. rs = t.fetchall()
  32. return self.transform(rs)
  33. def transform(self, all):
  34. rs = []
  35. for item in all:
  36. p = {
  37. "from": item[0],
  38. "to0": item[1],
  39. "to": json.loads(item[2]),
  40. "subject": item[3],
  41. "content": item[4],
  42. "time": item[5],
  43. }
  44. rs.append(p)
  45. return rs
  46. dataInstance = DataAccess()