py.lib

Yohn Y. 2023-01-28 Parent:84b54a8a6d4c

43:6f8bea109183 Go to Latest

py.lib/db/sqlite.py

. Наведение порядка в коде логирования

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