我想有一个基于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')
它失败,错误是没有要返回的结果集。所以我想检查是否有我应该返回的结果,如果没有理由返回任何结果,则跳过。
1条答案
按热度按时间rbpvctlc1#
在此期间,我已经能够产生一个解决方案,似乎在理想的方式工作。
根据上面写的
pyodbc
游标属性的文档description
,属性“将None
对于不返回行的操作或未调用某个execute方法的操作”。请注意,如果您想改用rowcount属性,这在impala中是行不通的,因为您将得到
rowcount=-1
即使有一个非空的结果集。因此,可以将问题中的函数重写为:
也就是说,如果有更好的方法来处理这个问题,我还是很想听听。