【发布时间】:2016-09-23 17:32:16
【问题描述】:
我有一个 python 脚本在数据库中运行大约 50,000 个项目,每个项目大约需要 10 秒,我想停止它。
但是,如果我只是在代码在 try except 部分中时按 ctrl + C,那么我的程序会进入期望语句并删除该项目然后继续。关闭程序的唯一方法就是以这种方式反复删除项目,直到我运气好,没有在 try 语句中捕获它。
如何在不终止 try 语句的情况下退出脚本?
编辑 1
我有一个类似这样的声明:
for item in items:
try:
if is_item_gone(content) == 1:
data = (item['id'])
db.update('UPDATE items SET empty = 0 WHERE id = (%s);', data)
else:
do alot of stuff
except:
data = (item['id'])
db.delete('...')
编辑 2
我的连接到数据库代码的顶部如下所示:
#!/usr/bin/python
import MySQLdb
import sys
class Database:
....
【问题讨论】:
-
使用
except Exception而不是except。 -
你发现了什么异常?
-
这个问题几乎可以肯定是因为你使用了一个毯子 except 这几乎总是一个坏主意,如果你捕捉到特定的异常然后 ctrl + C 将停止你的程序跨度>
-
@PadraicCunningham 我现在添加了我的代码。
-
是的,你的毯子除了是问题,你用什么连接到数据库?基本上你应该有
except some_specific_exception或except some_specific_exception, another_specific_exception,因为你捕捉到了每一个异常,你捕捉到了键盘中断,所以脚本继续运行
标签: python