Я пытаюсь запросить мой кластер Redshift, используя Python и psycopg2.Пожалуйста, ознакомьтесь с подробностями ниже:
for i in x:
function_name(p1,p2)
def function_name(parameter_one,parameter_two):
try:
//Create Query
//Create query dynamically
//Run query here
SELECT (SELECT SUM(value)
FROM schemaName.tableName
WHERE primary_key = 12532
AND TO_CHAR(tr_datetime,'YYYYMMDDHH24MI') > '201709162130'
AND TO_CHAR(tr_datetime,'YYYYMMDDHH24MI') <= '201709162145')/(SELECT SUM(value)
FROM schemaName.tableName
WHERE primary_key = = 12542
AND TO_CHAR(tr_datetime,'YYYYMMDDHH24MI') > '201709162130'
AND TO_CHAR(tr_datetime,'YYYYMMDDHH24MI') <= '201709162145');
except Exception as exception:
print("Error-----------------------------------")
error = 'Error on line {}'.format(sys.exc_info()[-1].tb_lineno), type(exception).__name__, exception
message = str(error)
print("Error message " + str(exception))
print("EXCEPTION OCCURRED" + message)
Проблема, с которой я сталкиваюсь, заключается в том, что всякий раз, когда я сталкиваюсь с Divide by zero
, моя программа прекращает выполнение.Я получаю следующее сообщение.Пожалуйста, обратитесь к трассировке стека ниже:
2018-12-21 13:50:36 -- EXCEPTION OCCURRED in module x for 12532
2018-12-21 13:50:36 -- EXCEPTION OCCURRED in module x for 12532
13:50:36
2018-12-21 13:50:36 -- ('Error on line 1062', 'QueryCanceledError', QueryCanceledError('Divide by zero\n',))
2018-12-21 13:50:36 -- ('Error on line 1062', 'QueryCanceledError', QueryCanceledError('Divide by zero\n',))
13:50:36
2018-12-21 13:50:36 -- EXCEPTION OCCURRED in module x for primary key 12532
2018-12-21 13:50:36 -- EXCEPTION OCCURRED in module x for primary key 12532
13:50:36
2018-12-21 13:50:36 -- ('Error on line 1001', 'InternalError', InternalError('current transaction is aborted, commands ignored until end of transaction block\n',))
2018-12-21 13:50:36 -- ('Error on line 1001', 'InternalError', InternalError('current transaction is aborted, commands ignored until end of transaction block\n',))
13:50:36
2018-12-21 13:50:36 -- EXCEPTION OCCURRED in module x for 12532
2018-12-21 13:50:36 -- EXCEPTION OCCURRED in module x for 12532
13:50:36
2018-12-21 13:50:36 -- ('Error on line 1001', 'InternalError', InternalError('current transaction is aborted, commands ignored until end of transaction block\n',))
2018-12-21 13:50:36 -- ('Error on line 1001', 'InternalError', InternalError('current transaction is aborted, commands ignored until end of transaction block\n',))
Мой вопрос, почему мое соединение закрыто?Почему я получаю current transaction is aborted, commands ignored until end of transaction block
, я ожидал, что программа продолжит другие итерации, так как мой код инкапсулирован в блок try / catch.
Было бы здорово, если бы кто-то мог помочь мне понять основную причинуи фоновое поведение Redshift и Python.