py.lib

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

0:f35759c0fdd0 Go to Latest

py.lib/awNet/db/sqlite.py

init

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