Advertisement
Guest User

Untitled

a guest
Jan 9th, 2018
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.31 KB | None | 0 0
  1. import psycopg2
  2. import logging
  3. import threading
  4.  
  5. class Connection():
  6.     def __init__(self, host, database, user, password, port):
  7.         self.logger = logging.getLogger('database_facade')
  8.         self.connection = None
  9.         self.cursor = None
  10.         self.host = host
  11.         self.database = database
  12.         self.user = user
  13.         self.password = password
  14.         self.port = port
  15.         self.lock = threading.Lock()
  16.  
  17.     def connect(self):
  18.         try:
  19.             self.connection = psycopg2.connect(host=self.host, database=self.database, user=self.user, password=self.password, port=self.port)
  20.             self.logger.info("Connecting to databse successfully.")
  21.             self.cursor = self.connection.cursor()
  22.         except psycopg2.DatabaseError:
  23.             self.logger.error("Cannot connect to database.")
  24.             raise
  25.  
  26.     def execute(self, sql, data=([])):
  27.         if self.connection != None and self.cursor != None:
  28.             try:
  29.                 query = self.cursor.mogrify(sql, data)
  30.                 self.logger.debug("Executing: %s" % (query))
  31.                 self.lock.acquire()
  32.                 self.cursor.execute(sql, data)
  33.                 self.lock.release()
  34.                 return True
  35.             except psycopg2.DatabaseError:
  36.                 self.logger.error("Cannot execute sql")
  37.                 self.connection.rollback()
  38.                 self.lock.release()
  39.                 raise
  40.         else:
  41.             self.logger.error("Connection or cursor not set")
  42.             raise
  43.  
  44.     def commit(self):
  45.         if self.connection != None and self.cursor != None:
  46.             try:
  47.                 self.lock.acquire()
  48.                 self.connection.commit()
  49.                 self.lock.release()
  50.                 return True
  51.             except psycopg2.DatabaseError:
  52.                 self.logger.error("Cannot execute sql")
  53.                 self.connection.rollback()
  54.                 self.lock.release()
  55.                 raise
  56.         else:
  57.             self.logger.error("Connection or cursor not set")
  58.             raise
  59.  
  60.     def executeAndCommit(self, sql, data=([])):
  61.         if self.connection != None and self.cursor != None:
  62.             try:
  63.                 query = self.cursor.mogrify(sql, data)
  64.                 self.logger.debug("Executing and commiting: %s" % (query))
  65.                 self.lock.acquire()
  66.                 self.cursor.execute(sql, data)
  67.                 self.connection.commit()
  68.                 self.lock.release()
  69.                 return True
  70.             except psycopg2.DatabaseError:
  71.                 self.logger.error("Cannot execute sql")
  72.                 self.connection.rollback()
  73.                 self.lock.release()
  74.                 raise
  75.         else:
  76.             self.logger.error("Connection or cursor not set")
  77.             raise
  78.  
  79.     def executeAndFetchAll(self, sql, data=([])):
  80.         if self.connection != None and self.cursor != None:
  81.             try:
  82.                 query = self.cursor.mogrify(sql, data)
  83.                 self.logger.debug("Executing and fetching all: %s" % (query))
  84.                 self.lock.acquire()
  85.                 self.cursor.execute(sql, data)
  86.                 self.lock.release()
  87.                 result = self.cursor.fetchall()
  88.                 return result
  89.             except psycopg2.DatabaseError:
  90.                 self.logger.error("Cannot execute sql")
  91.                 self.connection.rollback()
  92.                 self.lock.release()
  93.                 raise
  94.         else:
  95.             self.logger.error("Connection or cursor not set")
  96.             raise
  97.  
  98.     def executeAndFetchOne(self, sql, data=([])):
  99.         if self.connection != None and self.cursor != None:
  100.             try:
  101.                 query = self.cursor.mogrify(sql, data)
  102.                 self.logger.debug("Executing and fetching one: %s" % (query))
  103.                 self.lock.acquire()
  104.                 self.cursor.execute(sql, data)
  105.                 self.lock.release()
  106.                 result = self.cursor.fetchone()
  107.                 return result
  108.             except psycopg2.DatabaseError:
  109.                 self.logger.error("Cannot execute sql")
  110.                 self.connection.rollback()
  111.                 self.lock.release()
  112.                 raise
  113.         else:
  114.             self.logger.error("Connection or cursor not set")
  115.             raise
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement