py.lib

Yohn Y. 2022-08-20 Parent:84b54a8a6d4c

38:4f4cc2fc9805 Go to Latest

py.lib/db/sqlite.py

. Полный рефакторинг кода модулей dataclass_utils.py и config_parse_helper.py. Теперь логика предсказуема. + функция dataobj_extract не просто бездумно загоняет данные в класс данных, но имеет функционал проверки данных с возбуждением исключения при разнице (по умолчанию) и принудительного приведения типов.

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