在 运行 时使用 SQL 但在调试时不会出现浮点异常

Floating point exception when using SQL when run but not when debugged

作为我的 Python 程序的一部分,我创建了一个方法,该方法 运行s 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)

它使用 ibm_db API 库,其目标是 运行 一个 SQL 查询。如果需要结果,它将结果集转换为 pandas 数据框以供程序使用。当我 运行 程序使用 print(run_query(conn, "SELECT * FROM ppt_products;", True)) 打印返回的数据帧时,它不会打印任何内容,而是退出并显示此错误代码:Process finished with exit code 136 (interrupted by signal 8: SIGFPE)(顺便说一句,我正在使用 PyCharm专业的)。但是,当我在 PyCharm 中使用 pydev 调试器调试程序时,程序 运行 顺利并打印出所需的输出,它应该如下所示:

         id brand model           url
0      2392   sdf  rtsg  asdfasdfasdf
1  23452345   sdf  rtsg  asdfasdfasdf
2      6245   sdf  rtsg  asdfasdfasdf
3      8467   sdf  rtsg  asdfasdfasdf

我曾尝试调试浮点异常,但只能通过名为 fpectl 的模块找到 Python 2 的解决方案,该模块可用于打开和关闭浮点异常。

如有任何帮助,我将不胜感激。

错误仅发生在 PyCharm。当我 运行 它使用命令行时,错误没有发生。这使我相信错误可能出在 运行ning 脚本的 JetBrains 机制中。感谢 data_henrik 使用 pandas.read_sql 的建议,因为它简化了从 SQL 查询中获取结果集的过程。