Advertisement
Guest User

Untitled

a guest
Jul 1st, 2016
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.59 KB | None | 0 0
  1. class Ora():
  2. """
  3. A wrapper class for cx_Oracle
  4. """
  5.  
  6. config = ConfigParser.RawConfigParser()
  7. config.read('config.ini')
  8.  
  9.  
  10. ORA_SID = config.get('oracle', 'oracle_sid')
  11. ORA_USER = config.get('oracle', 'oracle_user')
  12. ORA_PASSWORD = config.get('oracle', 'oracle_pass')
  13. ORA_HOST = config.get('oracle', 'oracle_host')
  14. ORA_PORT = int( config.get('oracle', 'oracle_port') )
  15.  
  16.  
  17. def __init__(self):
  18. """
  19. Inits Oracle connection
  20. """
  21. self.__connect()
  22.  
  23. def __del__(self):
  24. logger.Debug('destroying db object')
  25. self.__disconnect()
  26.  
  27.  
  28. def __connect(self):
  29. """
  30. Creates connection
  31. """
  32. oraAccess = "%s/%s@//%s:%d/%s" % (self.ORA_USER, \
  33. self.ORA_PASSWORD, \
  34. self.ORA_HOST, \
  35. self.ORA_PORT, \
  36. self.ORA_SID )
  37. try:
  38. logger.Debug("connecting to oracle db at %s" % self.ORA_HOST )
  39. self.__connection = cx_Oracle.connect(oraAccess)
  40. self.__cursor = self.__connection.cursor()
  41.  
  42. except cx_Oracle.DatabaseError as e:
  43. logger.Debug("DatabaseError: %s " % e)
  44.  
  45.  
  46. def __disconnect(self):
  47. """
  48. Closes a connectoin
  49. """
  50. try:
  51. self.__cursor.close()
  52. self.__connection.close()
  53. except Exception as err:
  54. logger.Debug(err)
  55.  
  56.  
  57. def get_rows(self, query):
  58. """
  59. Fetchs one row
  60. """
  61.  
  62. result = None
  63. try:
  64. self.__cursor.execute(query)
  65. except cx_Oracle.DatabaseError as e:
  66. error, = e.args
  67. logger.Debug(e)
  68.  
  69. if error.code == 3114:
  70. self.__disconnect()
  71. self.__connect()
  72. self.__cursor.execute(query)
  73.  
  74. number_columns = len(self.__cursor.description)
  75.  
  76. if number_columns > 1:
  77. result = [item for item in self.__cursor.fetchall()]
  78. else:
  79. result = [item[0] for item in self.__cursor.fetchall()]
  80.  
  81. return result
  82.  
  83.  
  84. def execute(self, query):
  85.  
  86. try:
  87.  
  88. self.__cursor.execute(query)
  89.  
  90. except cx_Oracle.DatabaseError as e:
  91.  
  92. error, = e.args
  93. logger.Debug(e)
  94.  
  95. self.__connection.rollback()
  96.  
  97. if error.code == 3114:
  98. self.__disconnect()
  99. self.__connect()
  100. self.__cursor.execute(query)
  101.  
  102. return e
  103.  
  104.  
  105. self.__connection.commit()
  106.  
  107. return True
  108.  
  109.  
  110.  
  111.  
  112. if __name__ == "__main__":
  113. pass
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement