如何在没有异常处理的情况下自动化pyodbc中的fetchall()调用?

时间:2016-10-18 15:31:11

标签: python pyodbc

我希望在每次 pyodbc 查询后自动获取结果。在通常情况下cursor.fetchall()调用如果没有执行SQL或者没有返回结果集(例如,不是SELECT语句),则会引发ProgrammingError异常。我想做这样的事情:

def execute(query, data):
    cursor.execute(query, data)
    cursor.commit()
    try:
      result = cursor.fetchall()
    except pyodbc.ProgrammingError:
      result =  None
    return result

是否有某种方法可以在不使用异常处理的情况下实现(如果使用的话它的工作速度太慢)?

1 个答案:

答案 0 :(得分:1)

以下是一个可能适合您的示例,其中包含要运行的示例查询列表:

sql_to_run = [
    "SELECT 10000",
    "SELECT 2 + 2",
    "",
    "SELECT 'HELLO WORLD'",
]

for sql in sql_to_run:
    rows = cursor.execute(sql)

    if cursor.rowcount:
        for row in rows:
            print(row)

输出:

(10000, )
(4, )
('HELLO WORLD', )

这会诀窍吗?祝你好运!