簡體   English   中英

運行時使用 SQL 時出現浮點異常,但在調試時沒有

[英]Floating point exception when using SQL when run but not when debugged

作為我的 Python 程序的一部分,我創建了一個在 Db2 服務器上運行 sql 查詢的方法。 這里是:

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 dataframe 以在程序中使用。 當我運行程序以print(run_query(conn, "SELECT * FROM ppt_products;", True))返回的 dataframe 時,它不打印任何內容,而是以以下錯誤代碼退出: Process finished with exit code 136 (interrupted by signal 8: SIGFPE) (順便說一句,我使用的是 PyCharm Professional)。 但是,當我在 PyCharm 中使用 pydev 調試器調試程序時,程序運行平穩並打印出所需的 output,它應該如下所示:

         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 中。 當我使用命令行運行它時,沒有發生錯誤。 這讓我相信錯誤可能出在 JetBrains 運行腳本的機制中。 感謝 data_henrik 提出使用 pandas.read_sql 的建議,因為它簡化了從 SQL 查詢中獲取結果集的過程。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM