py.lib
2023-01-28
Parent:84b54a8a6d4c
py.lib/db/sqlite.py
. Наведение порядка в коде логирования
| awgur@13 | 1 # coding: utf-8 |
| awgur@13 | 2 import sqlite3 |
| awgur@14 | 3 from sqlite3 import Error, IntegrityError |
| awgur@13 | 4 |
| awgur@34 | 5 |
| awgur@13 | 6 class DB: |
| awgur@34 | 7 def __init__(self, db_file): |
| awgur@34 | 8 self._conn = sqlite3.connect(db_file) |
| awgur@34 | 9 self._ex = self._conn.execute |
| awgur@34 | 10 self.commit = self._conn.commit |
| awgur@34 | 11 self.rollback = self._conn.rollback |
| awgur@34 | 12 |
| awgur@34 | 13 # DB PREP |
| awgur@34 | 14 self._ex("PRAGMA journal=WAL") |
| awgur@34 | 15 self._ex("PRAGMA foreign_keys=ON") |
| awgur@34 | 16 self.commit() |
| awgur@34 | 17 |
| awgur@34 | 18 def __del__(self): |
| awgur@34 | 19 try: |
| awgur@34 | 20 self.rollback() |
| awgur@34 | 21 self._conn.close() |
| awgur@34 | 22 except: |
| awgur@34 | 23 pass |
| awgur@34 | 24 |
| awgur@34 | 25 def __call__(self, *a, **kwa): |
| awgur@34 | 26 cur = self._conn.cursor() |
| awgur@34 | 27 cur.execute(*a, **kwa) |
| awgur@34 | 28 return cur |
| awgur@34 | 29 |
| awgur@34 | 30 def cq(self, *a, **wa): |
| awgur@34 | 31 try: |
| awgur@34 | 32 res = self(*a, **wa) |
| awgur@34 | 33 self.commit() |
| awgur@34 | 34 return res |
| awgur@34 | 35 except Error as e: |
| awgur@34 | 36 self.rollback() |
| awgur@34 | 37 raise e |