py.lib.aw_db_tools

Yohn Y. 2024-11-01 Parent:4b0d10bfa023

3:fd7d3b38860e Go to Latest

py.lib.aw_db_tools/src/aw_db_tools/sqlite.py

.. 0.202411.1 . Подгонка под новые веяния SDK . Исправление опечаток.

History
1 # coding: utf-8
2 """\
3 Обёртка вокруг стандартного модуля работы с СУБД SQLite. Создана исключительно из собственных представлений
4 о прекрасном.
5 """
7 import sqlite3
8 from sqlite3 import Error as DBError, IntegrityError
11 class DB:
12 def __init__(self, db_file):
13 self._conn = sqlite3.connect(db_file)
14 self._ex = self._conn.execute
15 self.commit = self._conn.commit
16 self.rollback = self._conn.rollback
18 # DB PREP
19 self._ex("PRAGMA journal=WAL")
20 self._ex("PRAGMA foreign_keys=ON")
21 self.commit()
23 def __del__(self):
24 try:
25 self.rollback()
26 self._conn.close()
28 except:
29 pass
31 def __call__(self, *a, **kwa):
32 cur = self._conn.cursor()
33 cur.execute(*a, **kwa)
34 return cur
36 def cq(self, *a, **wa):
37 try:
38 res = self(*a, **wa)
39 self.commit()
40 return res
42 except DBError as e:
43 self.rollback()
44 raise e