@lavagod

Почему скидывается итерация?

Вот смотрите...

Получаю данные
name = add_e11.get()
start = add_e12.get()
finish = add_e13.get()
grp_name = add_e14.get()

Выдергиваю из базы данных 3 записи
sql = 'SELECT ID_USER FROM grp WHERE NAME_GRP=?'
data = cur.execute(sql,( grp_name, )) # Список альпинистов в группе
conn.commit()

Их там три штуки...

Итерируюсь по ним, получаю на экране 1,2,3 (индексы альпинистов)
for i in data:
        id_user = i[0]
        print(id_user)     # Вывод 1,2,3

Но как только хочу с этими индексами записать в таблицу три новые записи
for i in data:
        id_user = i[0]
        sql = 'INSERT INTO sunrise(NAME_MNT,DATA_START,DATA_FINISH,ID_USER,NAME_GRP) VALUES(?,?,?,?,?)'
        cur.execute(sql,( name,start,finish,id_user,grp_name ))
        conn.commit()



пишет только первую (с id_user=1) и продолжает дальше работу по тексту. Почему не происходит итерации по 2 и 3 индексу? Почему в таблицу записывается только одна запись с 1-ым индексом?
  • Вопрос задан
  • 51 просмотр
Решения вопроса 1
Зачем при чтении использовать conn.commit(), это строка сохраняет данные в базе после выполнения запроса на добавление/изменение ?, чтобы получить используй fetchall(), да и при записи попробуй INSERT OR UPDATE использовать, смотря как таблица задумывалась
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы