Задать вопрос
Geza420
@Geza420

Останавливается цикл for без ошибки. как продолжить исполнение цикла?

Как только вставляю запись в базу данных - цикл останавливается после первой обработки. не происходит ошибок, ничего не выскакивает. в чем может быть проблема?

for row in sql.execute(f'SELECT * FROM users'):
                    if row[10] != "None":
                        if row[1] not in users:
                            aa = great_circle(config.user_location, (float(row[10]), float(row[11])))
                            sql.execute(f"INSERT INTO location VALUES(?, ?)", (row[1], str(aa)))
                            db.commit()
                        else:
                            aa = great_circle(config.user_location, (float(row[10]), float(row[11])))
                            sql.execute(f'UPDATE location SET dis = "{str(aa)}" WHERE username = "{row[1]}"')
                            db.commit()
                            pass
  • Вопрос задан
  • 201 просмотр
Подписаться 1 Простой 4 комментария
Решения вопроса 1
@o5a
Вы же внутри цикла меняете сам курсор (своими insert) по которому делаете итерацию. Поэтому цикл дальше и не идет.

Делайте итерацию по результатам курсора, а не по нему самому.
for row in sql.execute(f'SELECT * FROM users').fetchall():
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
shabelski89
@shabelski89
engineer
Самое простое добавить принты на каждом шаге.
Чтобы получить результаты надо делать fetchall , и по ним идти в цикле.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы