py.lib

Yohn Y. 2020-08-02 Parent:cab7fedf8432 Child:f3e62028e5d3

14:50ff84d0bc56 Go to Latest

py.lib/db/sqlite.py

* db/sqlite.py: Импортируем полезные классы для реакции на ошибки

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