python中的游标关闭错误MYSQLConnection

时间:2017-02-28 01:48:42

标签: python mysql powershell windows-server-2012-r2 taskscheduler

我正在使用python程序来操作MySQL数据库。

当尝试使用Windows Server 2012任务调度程序时,它永远不会工作,报告确实说它成功但没有结果。

使用powershell脚本调用python程序后,任务调度程序使用它时仍然无效(当我自己执行时它确实有效)。

这部分报告为有问题:

try:
    dbconfig = read_db_config()
    conn = MySQLConnection(**dbconfig)
    cursor = conn.cursor()
    delstatmt = "DELETE FROM `event` WHERE filliere='IRC'  OR filliere='ETI' OR filliere='CGP'"
    cursor.execute(delstatmt)
    conn.commit()
except Error as e:
    print(e)

finally:
    cursor.close()
    conn.close()

错误位于“cursor.close()”行:UnboundLocalError:赋值前引用的局部变量'cursor'

注意:当任务计划程序未处理时,它确实有效。

编辑: Shubham Namdeo解决方案工作,虽然问题刚刚切换到conn.close()我也在“尝试”中移动了它。我不明白为什么它在第一种形式下不起作用,因为它在我自己执行时起作用。虽然出现了其他错误,但它们与此问题无关。 这是最终的代码:

try:
    dbconfig = read_db_config()
    conn = MySQLConnection(**dbconfig)
    cursor = conn.cursor()
    delstatmt = "DELETE FROM `event` WHERE filliere='IRC'  OR filliere='ETI' OR filliere='CGP'"
    cursor.execute(delstatmt)
    conn.commit()
    cursor.close()
    conn.close()
except Error as e:
    print(e)

1 个答案:

答案 0 :(得分:1)

在此引用我自己的评论

  

您是否检查过conn = MySQLConnection(**dbconfig)是否正常工作?如果不是,那么将不会创建任何游标,并且在finally python中将引发错误。

尝试使用此代码代替您的代码:

try:
    dbconfig = read_db_config()
    conn = MySQLConnection(**dbconfig)
    cursor = conn.cursor()
    delstatmt = "DELETE FROM `event` WHERE filliere='IRC'  OR filliere='ETI' OR filliere='CGP'"
    cursor.execute(delstatmt)
    conn.commit()
    cursor.close()
    conn.close()

except Error as e:
    print(e)

这可能会解决您的问题。