mirror of
https://github.com/ilri/dspace-statistics-api.git
synced 2024-11-16 03:17:04 +01:00
Alan Orth
2f342be948
Instead of opening one global persistent database connection when the application I am now abstracting it to a class that I can use in combination with Python's "with" context. Both connections and cursors are kept for the context of each "with" block and closed automatically when exiting. See: https://alysivji.github.io/managing-resources-with-context-managers-pythonic.html See: http://initd.org/psycopg/docs/connection.html#connection.close
24 lines
754 B
Python
24 lines
754 B
Python
from .config import DATABASE_NAME
|
|
from .config import DATABASE_USER
|
|
from .config import DATABASE_PASS
|
|
from .config import DATABASE_HOST
|
|
from .config import DATABASE_PORT
|
|
import psycopg2
|
|
import psycopg2.extras
|
|
|
|
|
|
class DatabaseManager():
|
|
'''Manage database connection.'''
|
|
|
|
def __init__(self):
|
|
self._connection_uri = 'dbname={} user={} password={} host={} port={}'.format(DATABASE_NAME, DATABASE_USER, DATABASE_PASS, DATABASE_HOST, DATABASE_PORT)
|
|
|
|
def __enter__(self):
|
|
self._connection = psycopg2.connect(self._connection_uri, cursor_factory=psycopg2.extras.DictCursor)
|
|
return self._connection
|
|
|
|
def __exit__(self, exc_type, exc_value, exc_traceback):
|
|
self._connection.close()
|
|
|
|
# vim: set sw=4 ts=4 expandtab:
|