Я некоторый код, как этотPython MySQLdb db.commit() не работает
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.
У вас возникли ошибки? Что означает «застрял на db.commit()»? Является ли программа застрявшей или вы имеете в виду, что эта часть не существует? – yuvi
Кажется, что вы можете создавать 25 000 потоков и присоединять результаты обратно вместе перед фиксацией. Вы уверены, что это проблема? Это не так ... – Ben
@yuvi Нет, я не получаю никаких ошибок. Я проверил свои журналы ошибок MySQL. Нет ошибок. Я имею в виду, что он работает только в первом цикле. Даже этот первый цикл no values обновляется в базе данных – Giri