py.lib

Yohn Y. 2020-07-24 Child:50ff84d0bc56

13:cab7fedf8432 Go to Latest

py.lib/db/sqlite.py

.. Реструктуризация

History
awgur@13 1 # coding: utf-8
awgur@13 2 import sqlite3
awgur@13 3
awgur@13 4 class DB:
awgur@13 5 def __init__(self, db_file):
awgur@13 6 self._con = sqlite3.connect(db_file)
awgur@13 7 self._ex = self._con.execute
awgur@13 8 self.commit = self._con.commit
awgur@13 9 self.rollback = self._con.rollback
awgur@13 10
awgur@13 11 # DB PREP
awgur@13 12 self._ex("PRAGMA journal=WAL")
awgur@13 13 self.commit()
awgur@13 14
awgur@13 15 def __del__(self):
awgur@13 16 try:
awgur@13 17 self.rollback()
awgur@13 18 self._con.close()
awgur@13 19 except:
awgur@13 20 pass
awgur@13 21
awgur@13 22 def __call__(self, *a, **kwa):
awgur@13 23 cur = self._con.cursor()
awgur@13 24 cur.execute(*a, **kwa)
awgur@13 25 return cur
awgur@13 26
awgur@13 27 def cq(self, *a, **wa):
awgur@13 28 try:
awgur@13 29 res = self(*a, **wa)
awgur@13 30 self.commit()
awgur@13 31 return res
awgur@13 32 except Exception as e:
awgur@13 33 self.rollback()
awgur@13 34 raise e