py.lib
19:26a5160d6b6b
Go to Latest
py.lib/db/pg.py
. Наведение порядка с PostgreSQL
. Реализация получения объекта соединения из моих обектов манипуляции с данными
1 # -*- coding: utf-8 -*-
3 from psycopg2 import Error as DBError, Warning, DataError, IntegrityError, ProgrammingError
4 # DBError: Клас-родитель для всех ошибок
5 # DataError: Проблема с данными (деление на ноль, численное изначение за областью значение и пр.)
6 # IntegrityError: задеты ограничения целостности БД (уникольность, внешние ключи и пр.)
7 # ProgrammingError: ошибки в запросах (таблица не найдена, или уже существует, ошибка в синтаксисе запроса и пр.)
9 import psycopg2.extensions
10 psycopg2.extensions.register_type(psycopg2.extensions.UNICODE)
11 psycopg2.extensions.register_type(psycopg2.extensions.UNICODEARRAY)
14 class Error(Exception):
19 def __init__(self, **kva):
20 self._conn = psycopg2.connect(**kva)
21 self.commit = self._conn.commit
22 self.rollback = self._conn.rollback
23 self.cursor = self._conn.cursor
24 self.reset = self._conn.reset
26 def __enter__(self, *a, **kva):
27 return self._conn.__enter__(*a, **kva)
29 def __exit__(self, *a, **kva):
30 return self._conn.__exit__(*a, **kva)
32 def __call__(self, *a, **kva):
34 _cur.execute(*a, **kva)
37 def cq(self, *a, **kva):
40 _cur.execute(*a, **kva)
43 except Exception as e:
58 return 'DB(%s)' % self._conn.dsn