py.lib

Yohn Y. 2019-09-30 Parent:8dcee5f5df4f

9:b18b6e30d6ba Go to Latest

py.lib/awNet/db/sqlite.py

.

History
1 # -*- coding: utf-8 -*-
2 # Dep
3 from sqlite3 import connect as _sqlite_connect
4 # Exceptions
5 from sqlite3 import Warning, Error, DatabaseError, IntegrityError, ProgrammingError
7 # --- # PROCS # --- #
8 def GetDB(db_file):
9 def func():
10 return DB(db_file)
11 return func
13 # --- # CLASS # --- #
14 class DB:
15 def __init__(self, db_file):
16 self._con = None
17 self._con = _sqlite_connect(db_file)
18 self.q = self._con.execute
19 self.qm = self._con.executemany
20 self.commit = self._con.commit
21 self.rollback = self._con.rollback
23 # DB PREP
24 self.cq("PRAGMA journal=WAL")
26 def __call__(self, *a, **wa):
27 return self.q(*a, **wa)
29 def __del__(self):
30 if self._con == None: return
31 try:
32 self.rollback()
33 self._con.close()
34 except Error:
35 pass
36 except Warning:
37 pass
39 def cq(self, *a, **wa):
40 try:
41 res = self.q(*a, **wa)
42 self.commit()
43 return res
44 except Exception as e:
45 self.rollback()
46 raise e
48 def cqm(self, *a, **wa):
49 try:
50 res = self.qm(*a, **wa)
51 self.commit()
52 return res
53 except Exception as e:
54 self.rollback()
55 raise e