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