Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import psycopg2
- import logging
- import threading
- class Connection():
- def __init__(self, host, database, user, password, port):
- self.logger = logging.getLogger('database_facade')
- self.connection = None
- self.cursor = None
- self.host = host
- self.database = database
- self.user = user
- self.password = password
- self.port = port
- self.lock = threading.Lock()
- def connect(self):
- try:
- self.connection = psycopg2.connect(host=self.host, database=self.database, user=self.user, password=self.password, port=self.port)
- self.logger.info("Connecting to databse successfully.")
- self.cursor = self.connection.cursor()
- except psycopg2.DatabaseError:
- self.logger.error("Cannot connect to database.")
- raise
- def execute(self, sql, data=([])):
- if self.connection != None and self.cursor != None:
- try:
- query = self.cursor.mogrify(sql, data)
- self.logger.debug("Executing: %s" % (query))
- self.lock.acquire()
- self.cursor.execute(sql, data)
- self.lock.release()
- return True
- except psycopg2.DatabaseError:
- self.logger.error("Cannot execute sql")
- self.connection.rollback()
- self.lock.release()
- raise
- else:
- self.logger.error("Connection or cursor not set")
- raise
- def commit(self):
- if self.connection != None and self.cursor != None:
- try:
- self.lock.acquire()
- self.connection.commit()
- self.lock.release()
- return True
- except psycopg2.DatabaseError:
- self.logger.error("Cannot execute sql")
- self.connection.rollback()
- self.lock.release()
- raise
- else:
- self.logger.error("Connection or cursor not set")
- raise
- def executeAndCommit(self, sql, data=([])):
- if self.connection != None and self.cursor != None:
- try:
- query = self.cursor.mogrify(sql, data)
- self.logger.debug("Executing and commiting: %s" % (query))
- self.lock.acquire()
- self.cursor.execute(sql, data)
- self.connection.commit()
- self.lock.release()
- return True
- except psycopg2.DatabaseError:
- self.logger.error("Cannot execute sql")
- self.connection.rollback()
- self.lock.release()
- raise
- else:
- self.logger.error("Connection or cursor not set")
- raise
- def executeAndFetchAll(self, sql, data=([])):
- if self.connection != None and self.cursor != None:
- try:
- query = self.cursor.mogrify(sql, data)
- self.logger.debug("Executing and fetching all: %s" % (query))
- self.lock.acquire()
- self.cursor.execute(sql, data)
- self.lock.release()
- result = self.cursor.fetchall()
- return result
- except psycopg2.DatabaseError:
- self.logger.error("Cannot execute sql")
- self.connection.rollback()
- self.lock.release()
- raise
- else:
- self.logger.error("Connection or cursor not set")
- raise
- def executeAndFetchOne(self, sql, data=([])):
- if self.connection != None and self.cursor != None:
- try:
- query = self.cursor.mogrify(sql, data)
- self.logger.debug("Executing and fetching one: %s" % (query))
- self.lock.acquire()
- self.cursor.execute(sql, data)
- self.lock.release()
- result = self.cursor.fetchone()
- return result
- except psycopg2.DatabaseError:
- self.logger.error("Cannot execute sql")
- self.connection.rollback()
- self.lock.release()
- raise
- else:
- self.logger.error("Connection or cursor not set")
- raise
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement