From: Jay Freeman (saurik) Date: Wed, 2 Feb 2011 10:40:59 +0000 (+0000) Subject: Rename cyql.connect() to overtake connect() and make it support with. X-Git-Url: https://git.saurik.com/cyql.git/commitdiff_plain/c8a72a64388a60fa511cd7a2dc344c3b0e438844 Rename cyql.connect() to overtake connect() and make it support with. --- diff --git a/__init__.py b/__init__.py index 90beb40..53e8de3 100644 --- a/__init__.py +++ b/__init__.py @@ -19,10 +19,32 @@ def one(values): assert len(values) == 1 return values[0] -class connection(object): - def __init__(self, driver): - self.driver = driver - self.driver.set_isolation_level(psycopg2.extensions.ISOLATION_LEVEL_AUTOCOMMIT) +class connect(object): + def __init__(self, dsn): + attempt = 0 + while True: + try: + self.driver = psycopg2.connect(**dsn) + break + except psycopg2.OperationalError, e: + if attempt == 2: + raise e + attempt = attempt + 1 + + try: + self.driver.set_client_encoding('UNICODE') + self.driver.set_isolation_level(psycopg2.extensions.ISOLATION_LEVEL_AUTOCOMMIT) + except: + self.driver.close() + + def close(self): + self.driver.close() + + def __enter__(self): + return self + + def __exit__(self, type, value, traceback): + self.close() @contextmanager def cursor(self): @@ -93,24 +115,6 @@ class connection(object): def has(self, statement): return one(self.one_('select exists(%s)' % (statement,))) -@contextmanager -def connect(dsn): - attempt = 0 - while True: - try: - driver = psycopg2.connect(**dsn) - break - except psycopg2.OperationalError, e: - if attempt == 2: - raise e - attempt = attempt + 1 - - try: - driver.set_client_encoding('UNICODE') - yield connection(driver) - finally: - driver.close() - def connected(dsn): def wrapped(method): def replaced(*args, **kw):