作为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查询。如果需要结果,它会将结果集转换为数据帧,以便在程序中使用。当我运行程序以print(run_query(conn, "SELECT * FROM ppt_products;", True))
打印返回的数据帧时,它不会打印任何内容,而是以以下错误代码退出:Process finished with exit code 136 (interrupted by signal 8: SIGFPE)
(顺便说一句,我使用的是PyCharm Professional)。但是,当我使用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中。当我使用命令行运行它时,没有发生错误。这让我相信错误可能是在JetBrains运行脚本的机制中。感谢data_henrik建议使用pandas.read_sql,因为它简化了从sql查询中获取结果集的过程
相关问题 更多 >
编程相关推荐