我正在使用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)
答案 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)
这可能会解决您的问题。