import psycopg2.pool
psycopg2.extensions.register_type(psycopg2.extensions.UNICODE)
+psycopg2.extensions.register_type(psycopg2.extensions.UNICODEARRAY)
class connect(object):
def __init__(self, dsn):
try:
self.driver.set_client_encoding('UNICODE')
- self.driver.set_isolation_level(psycopg2.extensions.ISOLATION_LEVEL_AUTOCOMMIT)
+ self.driver.autocommit = True
except:
self.driver.close()
+ try:
+ psycopg2.extras.register_hstore(self.driver, globally=False, unicode=True)
+ except psycopg2.ProgrammingError, e:
+ pass
+
def close(self):
self.driver.close()
def __exit__(self, type, value, traceback):
self.close()
+ def begin(self):
+ self.driver.autocommit = False
+
+ def commit(self):
+ self.driver.commit()
+
+ def rollback(self):
+ self.driver.rollback()
+
@contextmanager
def cursor(self):
cursor = self.driver.cursor(cursor_factory=psycopg2.extras.DictCursor)
@contextmanager
def transact(self, synchronous_commit=True):
- self.driver.set_isolation_level(psycopg2.extensions.ISOLATION_LEVEL_READ_COMMITTED)
+ self.driver.autocommit = False
try:
with self.cursor() as cursor:
if not synchronous_commit:
self.driver.rollback()
raise
finally:
- self.driver.set_isolation_level(psycopg2.extensions.ISOLATION_LEVEL_AUTOCOMMIT)
+ self.driver.autocommit = True
def one_(self, statement, context=None):
with self.execute(statement, 2, context) as cursor:
with self.execute(statement, 1) as cursor:
yield cursor
- def all(self, statement):
- with self.execute(statement, 1) as cursor:
+ def all(self, statement, context=None):
+ with self.execute(statement, 1, context) as cursor:
return cursor.fetchall()
def one(self, statement, context=None):