Guest User

Untitled

a guest
Apr 17th, 2018
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.41 KB | None | 0 0
  1. import pyodbc
  2. import ibm_db
  3. import cx_Oracle
  4. import collections
  5.  
  6. class DatabaseConnection(object):
  7.  
  8. def __init__(self, connection_type, hostname_or_ip, port, database_or_sid, username, password):
  9. self.port = port
  10. self.connection_type = connection_type
  11. self.hostname_or_ip = hostname_or_ip
  12. self.database_or_sid = database_or_sid
  13. self.username = username
  14. self.password = password
  15. self.dsn = "GEMPROD"
  16. self.connection_string = ""
  17. self.conn = ""
  18.  
  19. def __enter__(self):
  20. if self.connection_type == "Netezza":
  21. self.connection_string = "DRIVER={NetezzaSQL};SERVER=" + self.hostname_or_ip + ";PORT="+ self.port +
  22. ";DATABASE=" + self.database_or_sid + ";UID=" + self.username + ";PWD=" + self.password
  23. self.conn = pyodbc.connect(self.connection_string)
  24. return self.conn
  25. elif self.connection_type == "Oracle":
  26. dsn_tns = cx_Oracle.makedsn(self.hostname_or_ip, self.port, self.database_or_sid)
  27. self.conn = cx_Oracle.connect(user=self.username, password=self.password, dsn=dsn_tns)
  28. return self.conn
  29. elif self.connection_type == "DB2":
  30. self.connection_string = "Database=" + self.database_or_sid + ";HOSTNAME=" + self.hostname_or_ip +
  31. ";PORT=" + self.port + ";PROTOCOL=TCPIP;UID=" + self.username + ";PWD=" +
  32. self.password + ";"
  33. #self.conn = ibm_db.connect(self.connection_string, "", "")
  34. self.conn = ibm_db.connect('DSN=' + self.dsn, self.username, self.password)
  35. return self.conn
  36. pass
  37.  
  38. def __exit__(self, type, value, traceback):
  39. if self.connection_type == "Netezza":
  40. self.conn.close()
  41. elif self.connection_type == "DB2":
  42. ibm_db.close(self.conn)
  43. elif self.connection_type == "Oracle":
  44. self.conn.close
  45. pass
  46.  
  47. def __repr__(self):
  48. return '%s%s' % (self.__class__.__name__, self.dsn)
  49.  
  50. def query(self, query, params):
  51. pass
  52.  
  53.  
  54. #database_column_metadata = collections.namedtuple('DatabaseColumnMetadata','index column_name data_type')
  55. #database_field = collections.namedtuple('', '')
  56.  
  57. table_list = ['BNR_CIF_25DAY_RPT', table2]
  58. sort_column = None
  59. with DatabaseConnection('Netezza', ip, port, database, username, pwd) as connection_one:
  60. print('Netezza Query:')
  61. for table in table_list:
  62. cursor = connection_one.cursor()
  63. netezza_rows = cursor.execute("SELECT * FROM BNR_CIF_25DAY_RPT LIMIT 1")
  64. column_list = netezza_rows.description
  65. sort_column = str(column_list[0][0])
  66. netezza_query = "SELECT * FROM BNR_CIF_25DAY_RPT ORDER BY " + sort_column + " ASC LIMIT 10"
  67. netezza_rows = cursor.execute(netezza_query)
  68. print(column_list)
  69. netezza_column_list = []
  70. for idx, column in enumerate(column_list):
  71. column_name, data_type, *rest = column
  72. netezza_column_list.append((idx, column_name, data_type))
  73. for row in netezza_rows:
  74. print(row, end='n')
  75. for tup in netezza_column_list:
  76. print(tup, end='n')
  77. print('Netezza row count:', str(netezza_rows.rowcount) + 'n')
  78. cursor.close()
  79.  
  80. with DatabaseConnection('Oracle', hostname, port, SID, username, pwd) as connection_two:
  81. print('Oracle Query:')
  82. for table in table_list:
  83. try:
  84. cursor = connection_two.cursor()
  85. oracle_rows = cursor.execute("SELECT * FROM BNR_CIF_25DAY_RPT WHERE ROWNUM <= 1")
  86. column_list = oracle_rows.description
  87. sort_column = column_list[0][0]
  88. oracle_query = "SELECT * FROM (SELECT * FROM BNR_CIF_25DAY_RPT ORDER BY " + sort_column + " ASC) WHERE ROWNUM <=10"
  89. oracle_rows = cursor.execute(oracle_query)
  90. print(column_list)
  91. oracle_column_list = []
  92. for idx, column in enumerate(column_list):
  93. column_name, data_type, *rest = column
  94. oracle_column_list.append((idx, column_name, data_type))
  95. for row in oracle_rows:
  96. print(row, end='n')
  97. for tup in oracle_column_list:
  98. print(tup, end='n')
  99. print('Oracle row count:', str(oracle_rows.rowcount) + 'n')
  100. except cx_Oracle.DatabaseError as e:
  101. print(str(e))
  102. finally:
  103. cursor.close()
Add Comment
Please, Sign In to add comment