我有一些像这样的代码
db = MySQLdb.connect(host="localhost", user="root", passwd="root", db="domains")
cursor = db.cursor()
def check_urls(res):
pool = Pool(25)
for row in res:
pool.spawn(fetch, row[0], row[1])
pool.join()
def fetch(*args):
"""code trimmed for brevity"""
cursor.execute("""UPDATE com SET http_status=%s, is_checked=1 WHERE id=%s""",
(output.get('http_status', ""), id))
for _ in xrange(10000):
cursor.execute("SELECT domain, id FROM com WHERE is_checked IS NULL LIMIT 100")
result = cursor.fetchall()
check_urls(result)
db.commit()
cursor.close()
db.close()
My program get stuck at db.commit()
。数据库中没有更新值。谁能告诉我什么是错的?。
请注意:
我的check_urls
函数有一个for loop
,每个循环都有一个mysql更新查询。
答案 0 :(得分:1)
看起来你应该在cursor.execute之后将你的db.commit()移动到fetch函数中。您可以使用的另一种方式" global"带光标的关键字。或者,第三种方法,只需将光标作为函数的参数。