py.lib
2020-07-24
Child:50ff84d0bc56
py.lib/db/sqlite.py
.. Реструктуризация
| awgur@13 | 1 # coding: utf-8 |
| awgur@13 | 2 import sqlite3 |
| awgur@13 | 3 |
| awgur@13 | 4 class DB: |
| awgur@13 | 5 def __init__(self, db_file): |
| awgur@13 | 6 self._con = sqlite3.connect(db_file) |
| awgur@13 | 7 self._ex = self._con.execute |
| awgur@13 | 8 self.commit = self._con.commit |
| awgur@13 | 9 self.rollback = self._con.rollback |
| awgur@13 | 10 |
| awgur@13 | 11 # DB PREP |
| awgur@13 | 12 self._ex("PRAGMA journal=WAL") |
| awgur@13 | 13 self.commit() |
| awgur@13 | 14 |
| awgur@13 | 15 def __del__(self): |
| awgur@13 | 16 try: |
| awgur@13 | 17 self.rollback() |
| awgur@13 | 18 self._con.close() |
| awgur@13 | 19 except: |
| awgur@13 | 20 pass |
| awgur@13 | 21 |
| awgur@13 | 22 def __call__(self, *a, **kwa): |
| awgur@13 | 23 cur = self._con.cursor() |
| awgur@13 | 24 cur.execute(*a, **kwa) |
| awgur@13 | 25 return cur |
| awgur@13 | 26 |
| awgur@13 | 27 def cq(self, *a, **wa): |
| awgur@13 | 28 try: |
| awgur@13 | 29 res = self(*a, **wa) |
| awgur@13 | 30 self.commit() |
| awgur@13 | 31 return res |
| awgur@13 | 32 except Exception as e: |
| awgur@13 | 33 self.rollback() |
| awgur@13 | 34 raise e |