Управление базами данных python
2. Создать подключение к базе данных SQLite:
Более продвинутый браузер/редактор – DB Browser :
Из многофункциональных инструментов для работы с SQLite отлично подходит базовая версия Dbeaver .
Добавление записей в БД
Внесем в базу первую запись – информацию о пользователе по имени Инна Егорова, 20 лет, с факультета прикладной математики:
Редактирование записей
Изменим возраст для пользователя с именем Инна и фамилией Егорова:
Удаление записей
Напишем запрос на удаление из БД всех записей, которые содержат «Прикладная математика» в поле faculty :
Запросы на извлечение данных из нескольких таблиц
В реальных приложениях очень часто необходимо извлекать данные из нескольких таблиц сразу. Проиллюстрируем на примере базы данных university, в которой содержатся две таблицы – students и fees. Размер оплаты за обучение (fee) снижается на 3% каждый год. Кроме того, студенты, у который средний балл успеваемости соответствует установленному критерию, могут рассчитывать на дополнительную скидку.
Создадим и заполним базу с помощью скрипта. Код для поиска всех препаратов, названия которых совпадают с запросом, выглядит так:
Напишите программу, которая определяет, сколько времени суммарно каждый сотрудник провел в CRM в июне. Нужно вывести список сотрудников, которые провели в CRM более 95 часов.
Напишите программу, которая:
- Находит и выводит список записей, у которых есть дубликаты.
- Предлагает удалить дубликаты, и в случае ответа yes – удаляет их.
import sqlite3 con = sqlite3.connect('sales.db') cursor = con.cursor() # Находим дубликаты cursor.execute(''' SELECT brand, model, engine_volume, max_speed, price, COUNT(*) FROM items GROUP BY LOWER(brand), LOWER(model), engine_volume, max_speed, price HAVING COUNT(*) > 1 ''') # Выводим найденные дубликаты duplicates = cursor.fetchall() if duplicates: print('У этих записей есть дубликаты:') for row in duplicates: print(row[:-1]) answer = input('Хотите удалить дубликаты? Введите yes/no ' ) if answer.lower() == 'yes': # Создаем подключение к базе данных con = sqlite3.connect('sales.db') # Создаем курсор для взаимодействия с базой данных cursor = con.cursor() # Удаляем дубликаты со значением не начинающимся на заглавную букву cursor.execute(''' DELETE FROM items WHERE id NOT IN ( SELECT id FROM ( SELECT id, ROW_NUMBER() OVER ( PARTITION BY LOWER(brand), LOWER(model), color, engine_volume, max_speed, price ORDER BY id ) row_number FROM items ) WHERE row_number = 1 or (row_number = 2 and brand = LOWER(brand) and model = LOWER(model)) ) ''') # Сохраняем изменения в базе данных con.commit() print('Дубликаты удалены') else: print('Не забудьте удалить дубликаты') else: print('Дубликаты не найдены') # Закрываем соединение с базой данных con.close()
Подведем итоги
Мы научились выполнять основные операции с базой данных SQLite :
- создавать, редактировать и удалять записи;
- заполнять базу данными с помощью pandas;
- делать выборки данных по различным критериям;
- извлекать данные для последующих расчетов;
- удалять дубликаты записей.
Работа с базами данных – обширная тема, и ее невозможно подробно рассмотреть в одной статье. За кадром осталось многое, в том числе работа с таблицами, связанными отношениями один к одному, один ко многим, многие ко многим и многие к одному. Эту тему мы подробно разберем в новом курсе по Django.
- Особенности, сферы применения, установка, онлайн IDE
- Все, что нужно для изучения Python с нуля – книги, сайты, каналы и курсы
- Типы данных: преобразование и базовые операции
- Методы работы со строками
- Методы работы со списками и списковыми включениями
- Методы работы со словарями и генераторами словарей
- Методы работы с кортежами
- Методы работы со множествами
- Особенности цикла for
- Условный цикл while
- Функции с позиционными и именованными аргументами
- Анонимные функции
- Рекурсивные функции
- Функции высшего порядка, замыкания и декораторы
- Методы работы с файлами и файловой системой
- Регулярные выражения
- Основы скрапинга и парсинга
- Основы ООП: инкапсуляция и наследование
- Основы ООП: абстракция и полиморфизм
- Графический интерфейс на Tkinter
- Основы разработки игр на Pygame
- Основы работы с SQLite
- Основы веб-разработки на Flask
- Основы работы с NumPy