В рамках моей программы Python я создал метод, который запускает sql запросов на сервере Db2. Вот он:
def run_query(c, query, return_results=False):
stmt = db.exec_immediate(c, query)
if return_results:
df = {}
row = db.fetch_assoc(stmt)
for key in [key.lower() for key in row.keys()]:
df[key] = []
while row:
for key in [key .lower() for key in row.keys()]:
df[key].append(row[key.upper()])
row = db.fetch_assoc(stmt)
return pd.DataFrame(df)
Он использует библиотеку API ibm_db и его цель - выполнить запрос SQL. Если требуются результаты, он преобразует набор результатов в фрейм данных pandas для использования в программе. Когда я запускаю программу для печати возвращенного фрейма данных с print(run_query(conn, "SELECT * FROM ppt_products;", True))
, она ничего не печатает, а вместо этого выходит с этим кодом ошибки: Process finished with exit code 136 (interrupted by signal 8: SIGFPE)
(кстати, я использую PyCharm Professional). Однако, когда я отлаживаю программу с помощью отладчика pydev в PyCharm, программа работает плавно и выводит желаемый результат, который должен выглядеть так:
id brand model url
0 2392 sdf rtsg asdfasdfasdf
1 23452345 sdf rtsg asdfasdfasdf
2 6245 sdf rtsg asdfasdfasdf
3 8467 sdf rtsg asdfasdfasdf
Я пробовал отладить исключение с плавающей запятой, но смог находите решения только для Python 2 с помощью модуля под названием fpectl , который можно использовать для включения и выключения исключений с плавающей запятой.
Буду признателен за любую помощь.