Форум программистов, компьютерный форум, киберфорум
Python: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 29.05.2021
Сообщений: 2

Как обновить id в таблице БД, с условием, что все айди будет меняться после удалённой строки

30.05.2021, 00:09. Показов 2184. Ответов 4

Студворк — интернет-сервис помощи студентам
Добрый день. У меня есть табличка, созданная с помощью Treewiev в окне tkinter.
id|group| day
--+------+--------------
1 |П1-19|понедельник
2 |П2-18|вторник
3 |П3-19|пятница


Мне необходимо удалить строку, а затем обновить её в окне. Удалённой строкой может быть как последняя, так и любая другая. Айди при этом должен меняться.
При удалении у меня происходит:
id|group| day
--+------+--------------
1 |П1-19|понедельник
3 |П3-19|пятница

А мне нужно, чтобы айди менялся так:
id|group| day
--+------+--------------
1 |П1-19|понедельник
2 |П3-19|пятница

def delete_for_row(self, id_for_delete):
with sqlite3.connect('db/database.db', self.id_for_delete) as db:
cursor = db.cursor()
query = """ UPDATE timesTablesData SET id = id-1 WHERE id > ?;"""
cursor.execute(query)
db.commit()

Пытаюсь удалять вот таким запросом, не работает. Пыталась выставить айди как автоинкрементное поле через DB Browser, но он не устанавливается. Вылетает окно и сразу же закрывается, не могу прочитать ошибку....
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.05.2021, 00:09
Ответы с готовыми решениями:

Как будет меняться анодный ток в электронной лампе, если напряжение на сетке будет меняться по гармоническому закону
Как будет меняться анодный ток в электронной лампе,если напряжение на сетке будет меняться по гармоничесекому закону?

Как изменить ВСЕ строки в таблице БД с условием?
К примеру есть таблица. Там 10 строк. У каждой есть столбец `date`. У одних строк дата обновляется сама и заносится обдейтом. Таким...

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

4
 Аватар для Михалыч
1011 / 355 / 59
Регистрация: 28.02.2013
Сообщений: 939
30.05.2021, 14:20
cappusha, не спец в этом вопросе, пусть меня поправят более опытные товарищи.
Цитата Сообщение от cappusha Посмотреть сообщение
При удалении у меня происходит:
Насколько я понимаю это правильно. Первичный ключ или PRIMARY KEY в базах данных SQLite – это столбец, значения которого должны быть уникальными и вечными, и что бы не произошло, что бы не случилось, SQLite никогда не нарушит правило уникальности и вечности первичного ключа.
Цитата Сообщение от cappusha Посмотреть сообщение
А мне нужно, чтобы айди менялся так:
Если бы мне нужно привести к этому виду тогда я бы стер все в базе и перезаписал заново, с учетом удаленного элемента.
1
0 / 0 / 0
Регистрация: 29.05.2021
Сообщений: 2
31.05.2021, 10:54  [ТС]
Большое спасибо! Выглядит весьма правдоподнобно
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,694
Записей в блоге: 29
31.05.2021, 11:07
Цитата Сообщение от Михалыч Посмотреть сообщение
Если бы мне нужно привести к этому виду тогда я бы стер все в базе и перезаписал заново, с учетом удаленного элемента.
до этой строки все было верно)
менять всю таблицу из-за айдишников? зачем? можно ведь в самом выводе айди подписать как надо (не как в БД) или завести в БД отдельное поле для меняющихся ид. По сути проблемы -это порядковый номер, ему нечего вообще в бд делать, просто выводим на форму его сами (в бд не храним)

Цитата Сообщение от cappusha Посмотреть сообщение
Выглядит весьма правдоподнобно
нет)
1
 Аватар для Михалыч
1011 / 355 / 59
Регистрация: 28.02.2013
Сообщений: 939
31.05.2021, 11:21
Цитата Сообщение от Welemir1 Посмотреть сообщение
просто выводим на форму его сами (в бд не храним)
Точно
Цитата Сообщение от Welemir1 Посмотреть сообщение
до этой строки все было верно)
Зато теперь я знаю, что это не лучший вариант)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
31.05.2021, 11:21
Помогаю со студенческими работами здесь

Создание фильтра в совмещенной таблице, что бы после фильтрации были все строки но с отфильтроваными данными
Интересует создание типо "Ежедневника", но будет использоваться как сводная информация о записи на занятие. Имеется БД Access. Есть таблица...

Как будет меняться энергия отрицательно заряженной частицы, если она будет двигаться
3) Как будет меняться энергия отрицательно заряженной частицы, если она будет двигаться. а) в положительном направлении вдоль. б) поперек...

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

Что обновить в ПК для большей производительности (я знаю что нужно обновить всё, но пока не могу позволить)
Всем привет! В первой моей теме я просил у вас помощи с выбором видеокарты, по итогу выбрал GTX 1660 X , которой очень доволен. С...

Как проверить есть ли в таблице две одинаковых строки с определенным условием
Условие: равенство одного из полей некоторому значению...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru