Как удалить строку в sqlite
Перейти к содержимому

Как удалить строку в sqlite

  • автор:

Как удалить строку в SQLite, чтобы не удалить «индекс»

При определенных условиях нужно удалять строки с данными о пользователях, соответственно вместе с ними будет удаляться id с «порядковым номером» пользователя, то есть на старте есть таблица:

1 мужской 20 темный 2 женский 15 светлый 3 женский 30 рыжий 

После удаления второй строки остается:

1 мужской 20 темный 3 женский 30 рыжий 

Можно ли как-то сделать, чтобы осталось:

1 мужской 20 темный 2 женский 30 рыжий 

Нужно это для того, что внутри программы запускается цикл по id и выполняются определенные операции, соответственно, если ставлю цикл

for i in range(len(количество строк)) 

То количество строк остается 2, но присутствует 3, не могу c данными работать по i А если сначала получить данные, например, в переменную string о всех строках, а потом их обрабатывать, то:

for i in sting 

Не могу обращаться по id к строкам, а мне это нужно в моей задаче Сама задача: Есть написанный Telegram-бот, который подбирает кастинги по заданным характеристикам для моделей. Есть таблица с характеристиками моделей, которая заполняется по мере работы пользователя с ботом, есть таблица с кастингами, которую заполняют менеджеры также через бота Таблицы идентичны по виду, так как заполнение происходит по кнопкам, то есть таблица кастингов выглядит:

id (номер кастинга) casting gender age и тд (данные, которые указаны в кастинге) 

В отдельных строках они, потому что по ним идет сравнение с характеристиками моделей. Каждые два дня старые кастинги должны удаляться, что и приводит к сдвигу по id (для меня проще называть «порядковому номеру кастинга»), но когда пользователь нажимает кнопку «Найти кастинг», должен сработать цикл, бегущий по всем кастингам, а по id кастинга, который равен счетчику цикла, происходит работа с данными (сверяются на соответствие с данными пользователя) Бот функционировал ранее без проблем, сейчас просто происходит его улучшение и расширение, в связи с чем столкнулась с необходимостью работать по id, а не по тексту кастинга, как ранее Не знаю, понятно ли смогла задать вопрос, буду рада помощи! Заранее спасибо!

Как удалить строку в sqlite

Команда DELETE удаляет данные из БД. Она имеет следующий формальный синтаксис:

DELETE FROM имя_таблицы [WHERE условие_удаления]

Например, возьмем следующую таблицу products, которая хранит некоторый набор товаров:

CREATE TABLE products ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, company TEXT NOT NULL, product_count INTEGER DEFAULT 0, price INTEGER ); INSERT INTO products (name, company, product_count, price) VALUES ('iPhone 13', 'Apple', 3, 76000), ('iPhone 12', 'Apple', 2, 51000), ('Galaxy S21', 'Samsung', 2, 56000), ('Galaxy S20', 'Samsung', 1, 41000), ('P40 Pro', 'Huawei', 5, 36000);

Удалим из этой таблицы товары, у которых производитель — Huawei:

DELETE FROM products WHERE company='Huawei';

Команда DELETE в SQLite

Или удалим все товары, производителем которых является Apple и которые имеют цену меньше 60000:

DELETE FROM products WHERE company='Apple' AND price < 60000;

Если необходимо вовсе удалить все строки вне зависимости от условия, то условие можно не указывать:

DELETE FROM products;

Урок 35. Добавление и удаление строк в базе данных SQLite в Android

На этом уроке рассмотрим , как обновлять и удалять строки в базе данных SQLite методами update и delete. Исходный код примера под видео:

package . import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; public class DBHelper extends SQLiteOpenHelper < public static final int DATABASE_VERSION = 1; public static final String DATABASE_NAME = "contactDb"; public static final String TABLE_CONTACTS = "contacts"; public static final String KEY_ID = "_id"; public static final String KEY_NAME = "name"; public static final String KEY_MAIL = "mail"; public DBHelper(Context context) < super(context, DATABASE_NAME, null, DATABASE_VERSION); >@Override public void onCreate(SQLiteDatabase db) < db.execSQL("create table " + TABLE_CONTACTS + "(" + KEY_ID + " integer primary key," + KEY_NAME + " text," + KEY_MAIL + " text" + ")"); >@Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) < db.execSQL("drop table if exists " + TABLE_CONTACTS); onCreate(db); >>

Вам також може сподобатися

Now in Android

Уроки по android разработке на Java 0 1 900
Добро пожаловать в Now in Android, ваше текущее руководство по новинкам и важным событиям

Урок 11. Принципы навигации внутри и между андроид-приложениями

Архитектура андроид-приложений 0 10 231

Продолжая серию уроков о разработке мобильных приложений, мы будем изучать компонент Navigation набора инструментов

Broadcast Receivers

Документация по android 2 31 005

Перевод статьи на Медиуме о технологии Broadcast Receivers (широковещательные приемники). Это компоненты андроид, которые

Как удалить несколько строчек данных SQLite в Python?

И так, мне нужно удалить одну строчку данных в sqlite таблице, но как это сделать, не могу сообразить. И так в таблице имеются следующие данные5fe37300289fd121921226.png
Мне нужно удалить эту строку
5fe37335d3856502706409.png
В интернете везде пример удаления следующие
5fe3739b259ea286176847.png
Но это команда удалит все строчки, где присутствует Finance в столбце department_name. Но мне нужно сделать так:
id = 674759776
Если id_1 == с моим id
То удалить строчку данных где присутствует мой id. То есть следующую строчку
5fe3745bea9a5130009991.png
Как это можно сделать?

  • Вопрос задан более двух лет назад
  • 364 просмотра

1 комментарий

Простой 1 комментарий

SoreMix

soremix @SoreMix Куратор тега Python
Заменить Finance на нужный ID, а department_name на id_1?
Решения вопроса 1

150_Kirill_150

Kir Mozor @150_Kirill_150 Автор вопроса
FX, Python, C# (Unity), Coding, адепт Linux
Короче проблемку решил следующим образом:

import sqlite3 conn = sqlite3.connect("local.db", check_same_thread = False) # или :memory: чтобы сохранить в RAM cursor = conn.cursor() my_id = 74654758345 cursor.execute('SELECT id_2 FROM stol_game WHERE id_1 = ?', (my_id, )) id_2_turtle = cursor.fetchone() id_2 = int(id_2_turtle[0]) cursor.execute('SELECT brosokone2 FROM stol_game WHERE id_1 = ?', (my_id, )) brosokone2turtle = cursor.fetchone() brosokone2 = int(brosokone2turtle[0]) cursor.execute('SELECT brosoktwo2 FROM stol_game WHERE id_1 = ?', (my_id, )) brosoktwo2turtle = cursor.fetchone() brosoktwo2 = int(brosoktwo2turtle[0]) cursor.execute('SELECT vsumme2 FROM stol_game WHERE id_1 = ?', (my_id, )) vsumme2turtle = cursor.fetchone() vsumme2 = int(vsumme2turtle[0]) cursor.execute('SELECT stavka2 FROM stol_game WHERE id_1 = ?', (my_id, )) stavka2turtle = cursor.fetchone() stavka2 = int(stavka2turtle[0]) cursor.execute('SELECT frend_id FROM stol_game WHERE id_1 = ?', (my_id, )) frend_id2turtle = cursor.fetchone() frend_id = int(frend_id2turtle[0]) cursor.execute('SELECT brosokone1 FROM stol_game WHERE id_1 = ?', (my_id, )) brosokone1turtle = cursor.fetchone() brosokone1 = int(brosokone1turtle[0]) cursor.execute('SELECT brosoktwo1 FROM stol_game WHERE id_1 = ?', (my_id, )) brosoktwo1turtle = cursor.fetchone() brosoktwo1 = int(brosoktwo1turtle[0]) cursor.execute('SELECT vsumme1 FROM stol_game WHERE id_1 = ?', (my_id, )) vsumme1turtle = cursor.fetchone() vsumme1 = int(vsumme1turtle[0]) cursor.execute('SELECT stavka1 FROM stol_game WHERE id_1 = ?', (my_id, )) stavka1turtle = cursor.fetchone() stavka1 = int(stavka1turtle[0]) cursor.execute('SELECT win FROM stol_game WHERE id_1 = ?', (my_id, )) win2turtle = cursor.fetchone() win = int(win2turtle[0]) cursor.execute('DELETE FROM stol_game WHERE id_1 = ? AND frend_id = ? AND brosokone1 = ? AND brosoktwo1 = ? AND vsumme1 = ? AND stavka1 = ? AND id_2 = ? AND brosokone2 = ? AND brosoktwo2 = ? AND vsumme2 = ? AND stavka2 = ? AND win = ?', (my_id, frend_id, brosokone1, brosoktwo1, vsumme1, stavka1, id_2, brosokone2, brosoktwo2, vsumme2, stavka2, win, )) conn.commit()

Ответ написан более двух лет назад
Комментировать
Нравится Комментировать
Ответы на вопрос 2
plyshk1n2k @plyshk1n2k

Не пробовал добавить еще одно условие в запрос к бд?
У строк же разные id_1 и id_2
Или же можно использовать TOP, LIMIT, ROWNUM
Если ты уверен, что в бд на первой строке именно то что тебе нужно и тебе следует ее удалить, тогда смело используй то что я описал строчкой выше

Ответ написан более двух лет назад
Комментировать
Нравится Комментировать

Но это команда удалит все строчки, где присутствует Finance в столбце department_name.
Ну так в чём проблема-то ? нужно, чтобы присутствовало нужное число в нужном столбце
DELETE FROM departments
WHERE id_1=674759776

Ответ написан более двух лет назад
Комментировать
Нравится Комментировать
Ваш ответ на вопрос

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

python

  • Python
  • +3 ещё

Почему aiogram выводит пустой объект?

  • 1 подписчик
  • 13 минут назад
  • 11 просмотров

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *