Python mysqldb db.commit()无效

时间:2014-05-17 20:33:21

标签: python mysql-python gevent

我有一些像这样的代码

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更新查询。

1 个答案:

答案 0 :(得分:1)

看起来你应该在cursor.execute之后将你的db.commit()移动到fetch函数中。您可以使用的另一种方式" global"带光标的关键字。或者,第三种方法,只需将光标作为函数的参数。