我想有一个基于pyodbc包的函数,该函数针对impala运行查询,并在有东西要获取的情况下获取结果,否则,只需执行该语句即可。不幸的是,我不知道如何检查是否有东西要拿来。
def execute_my_query(connection, query):
cur = connection.cursor()
cur.execute(query)
res = cur.fetchall()
return res
不幸的是,如果我执行的操作没有结果集,例如:
execute_my_query(con, 'drop table if exists my_schama.my_table')
失败,并显示错误:没有返回结果集。因此,我想检查是否有返回结果,如果没有理由返回任何内容,请跳过。
答案 0 :(得分:0)
同时,我已经能够提出一种似乎可以按预期方式工作的解决方案。
基于针对游标属性pyodbc
在description
documentation中编写的内容,对于不返回行的操作或如果其中之一返回行,则属性“ None
”将为rowcount=-1
尚未调用execute方法。”
请注意,如果您想改用rowcount属性,则在impala中将无法使用它,因为即使存在非空结果集,您也会得到def execute_my_query(connection, query):
res = None
cur = connection.cursor()
cur.execute(query)
if cur.description is not None:
res = cur.fetchall()
return res
。
因此,可以将问题中的函数重写为:
contextInitialized(ServletContextEvent sce)
话虽这么说,如果有更好的方法来解决这个问题,我还是很想听听。