table.db/ row_id/ add new row id = 0 / новая строка в SQLite всегда первая

el-megel

Новичок
Пользователь
Янв 29, 2022
15
0
1
Win10\ python 3.12.5\ DB Browser for SQLite\Pycharm

Доброго времени суток програмерам, юзерам, ламерам и иным прямоходящим ровным посонам и леди.
Нужен совет, ибо я в деле написания кода - строго под видос с учителем которому бог дал быть учителем,
а не звездами тиктока так сказать. Кароч ламер я с самой большой заглавной буквы.
Понадобилась мне "table.db" строк так - на пол ляма, может больше может меньше, но думаю пол ляма будет норм.
Колонки - три четыре, не суть - там допилится если чо.
Посмотрел видос(мир знаний с Сергеем Балакиревым) и сваял таблицу в SQLite. Пропедалил кнопачки как учили
и вуаля - работает! В общем тело таблицы в PyCharm я пишу как Бох.....бох с маленьким склерозом, ибо без
видоса чота не пишется.
Во-о-о-от, теперь о сути: "db" нужна для построения графиков.

Эталонный график - строится в реальном времени(т.е. во время заполнения таблицы) на данных, взятых из колонок
со среза строк "row id 0 - row id 150". Для простолюдинов - график надо строить со свежих 150 строк!

Далее - этот график сравнивается со всей ранее(час, день неделю в конце концов назад) заполненой базой
и выводит график, графики с наибольшим соответствием эталонному.

На этом заканчивается лирика и начинают вянуть помидоры.

Ибо померещилось мне что забивать данные в базу будет удобно чтобы новая строка всегда имела "id = 0"
и располагалась первой в таблице, а заполненые сдвигались вниз с "id +1".
Но, исскуственный мосх чятжпт мне сказал что нет таблиц со смещением строки вниз...я не поверил,
и сломал масги ищо трем искуственным мосгам...а мой расплавился.

Я нарыл на просторах во чо -

Перемещение записи вверх или вниз осуществляется путем замены ее на запись до или после, соответственно.
Если значения идентификатора сортировки всегда непрерывны (т. Е. Вы не удаляете записи, которые могли бы
вызвать разрыв), то вы можете просто добавить или вычесть единицу, чтобы получить следующую или
предыдущую запись. Если не гарантируется непрерывность записей, вам нужно найти запись рядом с той,
которую вы хотите переместить.
To find the SortId of the record before: select max(SortId) from TheTable where SortId
< @SortId To find the SortId of the record after: select min(SortId) from TheTable where SortId >
@SortId To swap the two records, you can use this trick that calculates one value from the other:
update TheTable set SortId = @SortId1 + @SortId2 - SortId where SortId in (@SortId1, @SortId2)

Искусный мосх мне ответил - во чо

Перемещение записей вверх или вниз: осуществляется путем обмена записями с предыдущей или последующей записью соответственно.
Сортировка по SortId: предполагается, что значения SortId являются непрерывными, поэтому для поиска следующей или предыдущей записи можно просто прибавить или отнять единицу.
Поиск соседних записей: если значения SortId не являются непрерывными, необходимо найти запись, расположенную рядом с той, которую вы хотите переместить.
Обмен записями: используется хитрость с вычислением одного значения из другого. Это позволяет изменить SortId двух записей одновременно, чтобы поменять их местами.
Применение в вашем коде:

Чтобы добавить функцию сдвига заполненной строки вниз, вам нужно добавить код, который будет делать следующее:

Проверка на заполненность первой строки: проверить, содержит ли первая строка данные.
Сдвиг данных вниз: если первая строка заполнена, необходимо сдвинуть все остальные строки вниз (увеличив SortId на единицу).
Обновление SortId: обновить значение SortId для первой строки до значения SortId последней строки в таблице.
Очистка первой строки: очистить первую строку, чтобы она была готова к заполнению новой строки.

Из его рассуждений я асилил только ,,используется хитрость с вычислением одного значения из другого,,
По моему это даже эпичнее чем - денег нет но вы держитесь.

В итоге - я весь в растерянных соплях как девушка в автомате и матом вас прошу - подскожите путь куда копать.

Думается мне что программное решение всё же есть.
Подкинете код - не верится чота, ибо чюдо!
Если есть мануал или лучше видос на эту тему - подкиньте ссылку хоть.

Возможно я ваще не туда педалю клаву - может есть готовое решение в других прогах.

Возможно - оставить таблицу как есть (новая строка добавляется ниже заполненой) и
копать от старшего "id" к "0" - но чота мне логика не видится как это реализовать...

Пешыте, звоните, шлите деньгами
с уважением elmegel.
 

4olshoy_blen

Популярный
Пользователь
Ноя 13, 2022
403
112
43
Ибо померещилось мне что забивать данные в базу будет удобно чтобы новая строка всегда имела "id = 0"
Почему именно в начале нужно забивать данные? А если в конце и забирать последние 150 в чем трудность?
 

el-megel

Новичок
Пользователь
Янв 29, 2022
15
0
1
Дык я чота .... сижу вот думаю - тогда нужно просто прописать типа/ строить график от id max . - id max+id150...
ну всмысле чота типа этого и не париться. Просто как бы шыворот навыворот будет всё. Смотрю видосы щас
про построение графиков, думаю как всё привязать к таблице...
 

4olshoy_blen

Популярный
Пользователь
Ноя 13, 2022
403
112
43
Да неет, шыворот навыворот как раз вставлять в первую строку и каждый раз сдвигать на +1 все остальные. Это дичь в данной ситуации
 

Vershitel_sudeb

Vershitel sudeb
Команда форума
Модератор
Мар 17, 2021
969
219
43
20
Москва
Имхо это вообще все не правильно, просто добавь столбец со временем (и датой) когда добавлена запись, и когда вытаскиваешь, сортируй по нему
 

Форум IT Специалистов