Удаление строки sqlite python

Удаление строки sqlite python

Рассмотрим основные операции с базой данных SQLite с помощью библиотеки sqlite3 на примере таблицы:

CREATE TABLE people ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER )

Добавление данных

Для добавления данных применяется SQL-инструкция INSERT . Для добавления одной строки используем метод execute() объекта Cursor:

import sqlite3; con = sqlite3.connect("metanit.db") cursor = con.cursor() # добавляем строку в таблицу people cursor.execute("INSERT INTO people (name, age) VALUES ('Tom', 38)") # выполняем транзакцию con.commit()

Здесь добавляется одна строка, где name = «Tom», а age = 38.

Выражение INSERT неявно открывает транзакцию, для завершения которой необходимо вызвать метод commit() текущего объекта Connection.

Установка параметров

С помощью второго параметра в метод execute() можно передать значения для параметров SQL-запроса:

import sqlite3; con = sqlite3.connect("metanit.db") cursor = con.cursor() # данные для добавления bob = ("Bob", 42) cursor.execute("INSERT INTO people (name, age) VALUES (?, ?)", bob) con.commit()

В данном случае добавляемые в БД значения представляют кортеж bob. В SQL-запросе вместо конкретных значений используются знаки подстановки ?. Вместо этих символов при выполнении запроса будут вставляться данные из кортежа data. Так, первый элемент кортежа — строка «Bob» передается на место первого знакак ?, второй элемент — число 42 передается на место второго знака ?.

Читайте также:  Тег А

И если мы посмотрим на содержимое базы данных, то найдем там все добавленные объекты:

Добавление данных в SQLite в Python

Множественная вставка

Метод executemany() позволяет вставить набор строк:

import sqlite3; con = sqlite3.connect("metanit.db") cursor = con.cursor() # данные для добавления people = [("Sam", 28), ("Alice", 33), ("Kate", 25)] cursor.executemany("INSERT INTO people (name, age) VALUES (?, ?)", people) con.commit()

В метод cursor.executemany() по сути передается то же самое выражение SQL, только теперь данные определены в виде списка кортежей people. Фактически каждый кортеж в этом списке представляет отдельную строку — данные отдельного пользователя, и при выполнении метода для каждого кортежа будет создаваться свое выражение INSERT INTO

Добавление множества строк в базу данных SQLite с помощью метода executemany в Python

Получение данных

Для получения данных применяется SQL-команда SELECT . После выполнения этой команды курсор получает данные, которые можно получить с помощью одного из методов: fetchall() (возвращает список со всеми строками), fetchmany() (возвращает указанное количество строк) и fetchone() (возвращает одну в наборе строку).

Получение всех строк

Например, получим все ранее добавленные данные из таблицы people:

import sqlite3; con = sqlite3.connect("metanit.db") cursor = con.cursor() # получаем все данные из таблицы people cursor.execute("SELECT * FROM people") print(cursor.fetchall())

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

[(1, 'Tom', 38), (2, 'Bob', 42), (3, 'Sam', 28), (4, 'Alice', 33), (5, 'Kate', 25)]

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

import sqlite3; con = sqlite3.connect("metanit.db") cursor = con.cursor() cursor.execute("SELECT * FROM people") for person in cursor.fetchall(): print(f" - ")

Результат работы программы:

Tom - 38 Bob - 42 Sam - 28 Alice - 33 Kate - 25

Стоит отметить, что в примере выше необязательно вызывать метод fetchall, мы можем перебрать курсор в цикле как обычный набор:

for person in cursor: print(f" - ")

Получение части строк

Получение части строк с помощью метода fetchmany() , в который передается количество строк:

import sqlite3; con = sqlite3.connect("metanit.db") cursor = con.cursor() cursor.execute("SELECT * FROM people") # извлекаем первые 3 строки в полученном наборе print(cursor.fetchmany(3))

Результат работы программы:

[(1, 'Tom', 38), (2, 'Bob', 42), (3, 'Sam', 28)]

Выполнение этого метода извлекает следующие ранее неизвлеченные строки:

# извлекаем первые 3 строки в полученном наборе print(cursor.fetchmany(3)) # [(1, 'Tom', 38), (2, 'Bob', 42), (3, 'Sam', 28)] # извлекаем следующие 3 строки в полученном наборе print(cursor.fetchmany(3)) # [(4, 'Alice', 33), (5, 'Kate', 25)]

Получение одной строки

Метод fetchone() извлекает следующую строку в виде кортежа значений и возвращает его. Если строк больше нет, то возвращает None :

import sqlite3; con = sqlite3.connect("metanit.db") cursor = con.cursor() cursor.execute("SELECT * FROM people") # извлекаем одну строку print(cursor.fetchone()) # (1, 'Tom', 38)

Данный метод удобно применять, когда нам надо извлечь из базы данных только один объект:

import sqlite3; con = sqlite3.connect("metanit.db") cursor = con.cursor() cursor.execute("SELECT name, age FROM people WHERE раскладываем кортеж на две переменных name, age = cursor.fetchone() print(f"Name: Age: ") # Name: Bob Age: 42

Здесь получаем из бд строку с и полученный результат раскладываем на две переменных name и age (так как кортеж в Python можно разложить на отдельные значения)

Обновление

Для обновления в SQL выполняется команда UPDATE . Например, заменим у всех пользователей имя с Tom на Tomas:

import sqlite3; con = sqlite3.connect("metanit.db") cursor = con.cursor() # обновляем строки, где name = Tom cursor.execute("UPDATE people SET name ='Tomas' WHERE name='Tom'") # вариант с подстановками # cursor.execute("UPDATE people SET name =? WHERE name=?", ("Tomas", "Tom")) con.commit() # проверяем cursor.execute("SELECT * FROM people") print(cursor.fetchall()) # [(1, 'Tomas', 38), (2, 'Bob', 42), (3, 'Sam', 28), (4, 'Alice', 33), (5, 'Kate', 25)]

Для выполнения обновления также надо выполнять метод con.commit()

Удаление данных

Для удаления в SQL выполняется команда DЕLETE . Например, удалим всех пользователей с именем Bob:

import sqlite3; con = sqlite3.connect("metanit.db") cursor = con.cursor() # обновляем строки, где name = Tom cursor.execute("DELETE FROM people WHERE name=?", ("Bob",)) con.commit() # проверяем cursor.execute("SELECT * FROM people") print(cursor.fetchall()) # [(1, 'Tomas', 38), (3, 'Sam', 28), (4, 'Alice', 33), (5, 'Kate', 25)]

Для выполнения удаления также надо выполнять метод con.commit()

Источник

Выбор и удаление строк из таблицы sqlite3 в Python

В этом руководстве мы научимся выбирать строки таблицы в базе данных Sqlite в Python с помощью примеров программ.

  1. Создайте объект подключения к базе данных sqlite.
  2. Создайте курсор на соединение.
  3. Запустите метод sqlite3.execute(), передав ему запрос SELECT FROM.

Пример 1

Следующая программа извлекает все строки из таблицы базы данных sqlite3 с именем student.

import sqlite3 conn = sqlite3.connect('mysqlite.db') c = conn.cursor() c.execute('''SELECT * FROM students;''') rows = c.fetchall() for row in rows: print(row) #commit the changes to db conn.commit() #close the connection conn.close()

Когда вы запустите эту программу, вы увидите строки, которые присутствуют в таблице, на выходе консоли.

(1.0, 'Glen', 8.0) (2.0, 'Elliot', 7.0) (3.0, 'Gene', 7.0)

Вы также можете использовать модификаторы с запросом SELECT FROM для фильтрации, сортировки или преобразования ваших записей, когда это необходимо.

Пример 2: с предложением WHERE

В этом примере мы будем использовать предложение WHERE с запросом SELECT FROM для фильтрации строк на основе условия.

import sqlite3 conn = sqlite3.connect('mysqlite.db') c = conn.cursor() c.execute('''SELECT * FROM students WHERE name="Elliot";''') rows = c.fetchall() for row in rows: print(row) #commit the changes to db conn.commit() #close the connection conn.close()

В этом руководстве на примерах Python мы узнали, как выбирать строки таблицы с помощью хорошо подробных примеров.

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

Чтобы удалить все строки из таблицы Sqlite3, вы можете выполнить SQL-запрос DELETE.

В этом руководстве мы узнаем, как удалить все строки или записи из таблицы базы данных Sqlite с помощью библиотеки sqlite3.

  1. Подключитесь к базе данных sqlite3.
  2. Получите курсор от соединения.
  3. Выполнить запрос DELETE FROM таблицы.

Пример 1

В этом примере мы узнаем, как удалить все записи из таблицы базы данных sqlite3 с помощью запроса DELETE FROM TABLE.

import sqlite3 conn = sqlite3.connect('mysqlite.db') c = conn.cursor() # delete all rows from table c.execute('DELETE FROM students;',); print('We have deleted', c.rowcount, 'records from the table.') #commit the changes to db conn.commit() #close the connection conn.close()
We have deleted 18 records from the table.

Мы удалили 18 строк, все они в этой таблице.

В этом руководстве на примерах Python мы научились удалять строки из таблицы sqlite3 с помощью примеров.

Источник

Удаление строки sqlite python

python-video-tutorials

In this tutorial, we will learn how to execute DELETE Query in Python program to delete the data of SQLite’s table.

This tutorial mainly focuses on:

  • Delete a single row of SQLite table in Python
  • Delete a multiple rows of SQLite table in Python
  • Parameterized query to delete records from SQLite table in Python
  • Delete a single column of SQLite table in Python
  • Delete multiple columns of SQLite table in Python
  • Query to delete records in bulk.
  • Delete all rows and all columns of SQLite table in Python

Our database, and table present inside the database looks like:

deleting-data-from-database-in-python-sqlite

database name: “data.db”
table name: “users”
table columns: “id“, “name“, “age“, “gender”

Note: We have four records in our database table. We will perform operations on these records.

1). Single Row – Deleting Records from Database Table in SQLite in Python

#Importing Database Library import sqlite3 # Database Connectivity try: con = sqlite3.connect("data.db") cursor = con.cursor() print("Connected to Database Successfully") #Data Deletion Process-( Single-Row ) query = "DELETE from USERS where cursor.execute(query,(3,)) con.commit() cursor.close() except: print("Database Error") #END

Output: USERS table after deletion of row:-

delete-data-in-sqlite-in-python

Explanation: I will only explain the main points or the points which are totally new for us. Because as we are working with databases, so I’m assuming that you guys are aware of core concepts of python.

  • At line 4 we have imported our sqlite3 library, because the functions we used in our program is already pre-defined in sqlite3 library.
  • At line 7 & 16 we used try: & except: method which is useful for handling sql exception.
  • At line 8 & 9 we initialized “con” variable with connect() method with our database name “data.db“. The connect() method used here is pre-defined in sqlite3 library.
  • At line 12 we initialized variable “query” with sql query for data deletion. Here “users” is the name of our table present inside our database “data.db”.
  • At line 13 cursor.execute(query) here cursor storing the database connection & execute() is the function defined in sqlite3 library. The function execute() takes two parameter one is “ sql-query ” an second is the value which is to be passed as “ id ” to delete data related to that particular “ id ” from database table.
  • At line 14 it is necessary to call commit() function after making changes to our database.
  • At line 15 it is also necessary to close() our cursor. Basically cursor acts as pointer.

2). Multiple Rows – Deleting Records from Database Table in SQLite in Python

#Importing Database Library import sqlite3 # Database Connectivity def deletion(ids): try: con = sqlite3.connect("data.db") cursor = con.cursor() print("Connected to Database Successfully") #Data Deletion Process - ( Multiple - Rows ) query = "DELETE from USERS where cursor.executemany(query,ids) con.commit() cursor.close() except: print("Database Error") ids = [(1,),(5,)] deletion(ids) #END

Output: USERS table after deletion of rows:-

deleting-multiple-rows-from-sqlite-table-in-python

Explanation: Program explanation is same as I have discussed above. Only difference is that here we have used executemany() function instead of execute() function. And also we have passed ids list in function parameter as arguments to delete multiple rows.

Important: Our table has only left with one record, so I’m going to add 5 more records in our table.

Our table after adding new records:

sqlite-table-in-python

3). Parameterized Query – Deleting Records from Database Table in SQLite in Python

#Importing Database Library import sqlite3 # Database Connectivity def deletion(ids): try: con = sqlite3.connect("data.db") cursor = con.cursor() print("Connected to Database Successfully") #Data Deletion Process - ( Parameterized - Query ) query = "DELETE from USERS where cursor.execute(query,(ids,)) con.commit() cursor.close() except: print("Database Error") deletion(4) #END

Output: USERS table after deletion of rows:-

delete-data-from-sqlite-table-in-python

Explanation: Program explanation is same as I have discussed above. Only difference is that here we have used parameterized function to pass id as arguments to delete row with respect to id.

Источник

Оцените статью