py.lib

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

44:bfc3a109c06c 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