py.lib

John Y. 2017-04-09 Child:8dcee5f5df4f

0:f35759c0fdd0 Go to Latest

py.lib/awNet/db/sqlite.py

init

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
28 def __del__(self):
29 if self._con == None: return
30 try:
31 self.rollback()
32 self._con.close()
33 except Error:
34 pass
35 except Warning:
36 pass
38 def cq(self, *a, **wa):
39 try:
40 res = self.q(*a, **wa)
41 self.commit()
42 return res
43 except Exception as e:
44 self.rollback()
45 raise e
47 def cqm(self, *a, **wa):
48 try:
49 res = self.qm(*a, **wa)
50 self.commit()
51 return res
52 except Exception as e:
53 self.rollback()
54 raise e