Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Ora():
- """
- A wrapper class for cx_Oracle
- """
- config = ConfigParser.RawConfigParser()
- config.read('config.ini')
- ORA_SID = config.get('oracle', 'oracle_sid')
- ORA_USER = config.get('oracle', 'oracle_user')
- ORA_PASSWORD = config.get('oracle', 'oracle_pass')
- ORA_HOST = config.get('oracle', 'oracle_host')
- ORA_PORT = int( config.get('oracle', 'oracle_port') )
- def __init__(self):
- """
- Inits Oracle connection
- """
- self.__connect()
- def __del__(self):
- logger.Debug('destroying db object')
- self.__disconnect()
- def __connect(self):
- """
- Creates connection
- """
- oraAccess = "%s/%s@//%s:%d/%s" % (self.ORA_USER, \
- self.ORA_PASSWORD, \
- self.ORA_HOST, \
- self.ORA_PORT, \
- self.ORA_SID )
- try:
- logger.Debug("connecting to oracle db at %s" % self.ORA_HOST )
- self.__connection = cx_Oracle.connect(oraAccess)
- self.__cursor = self.__connection.cursor()
- except cx_Oracle.DatabaseError as e:
- logger.Debug("DatabaseError: %s " % e)
- def __disconnect(self):
- """
- Closes a connectoin
- """
- try:
- self.__cursor.close()
- self.__connection.close()
- except Exception as err:
- logger.Debug(err)
- def get_rows(self, query):
- """
- Fetchs one row
- """
- result = None
- try:
- self.__cursor.execute(query)
- except cx_Oracle.DatabaseError as e:
- error, = e.args
- logger.Debug(e)
- if error.code == 3114:
- self.__disconnect()
- self.__connect()
- self.__cursor.execute(query)
- number_columns = len(self.__cursor.description)
- if number_columns > 1:
- result = [item for item in self.__cursor.fetchall()]
- else:
- result = [item[0] for item in self.__cursor.fetchall()]
- return result
- def execute(self, query):
- try:
- self.__cursor.execute(query)
- except cx_Oracle.DatabaseError as e:
- error, = e.args
- logger.Debug(e)
- self.__connection.rollback()
- if error.code == 3114:
- self.__disconnect()
- self.__connect()
- self.__cursor.execute(query)
- return e
- self.__connection.commit()
- return True
- if __name__ == "__main__":
- pass
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement