py.lib
2017-04-09
Child:8dcee5f5df4f
py.lib/awNet/db/sqlite.py
init
| 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 |