Как создать базу данных SQLite на Python
SQLite — это легкая и простая в настройке система управления реляционными базами данных. SQLite не требует сервера, что является его самым большим преимуществом. В отличие от других СУБД, таких как MySQL или PostgreSQL, не требуется сервер для запуска базы данных. Таким образом, нам не нужна установка.
Базы данных SQLite хранятся локально вместе с файлами, хранящимися на диске. Это значительно ускоряет доступ к данным в базе данных и управление ими.
Все транзакции в SQLite соответствуют требованиям ACID.
Создать базу данных SQLite на Python
Чтобы создать базу данных SQLite на Python, используйте встроенный модуль sqlite3. Модуль sqlite3 предоставляет API, с помощью которого вы можете создавать базу данных. Он совместим с API базы данных Python. Не требует никаких внешних библиотек.
Создадим базу данных SQLite на Python.
Шаг 1. Импортируйте пакет sqlite3
Первый шаг — импортировать пакет sqlite3:
import sqlite3
Он предоставляет API, который понадобится для создания базы данных.
Шаг 2. Используйте функцию connect()
Используйте функцию sqlite3.connect() для создания базы данных. Будет создан объект подключения.
connection = sqlite3.connect('shows.db')
Имя нашей базы данных — «shows.db». Сохраняем подключение к объекту подключения.
В следующий раз, когда мы запустим этот файл app.py , он просто подключается к базе данных, и если базы данных нет, он создаст ее.
Шаг 3. Создайте таблицу базы данных
Чтобы создать таблицу в базе данных, нам нужно использовать объект курсора. Чтобы создать объект курсора, используйте метод connection.cursor() .
cursor = connection.cursor()
С помощью этого объекта курсора мы теперь можем выполнять команды и запросы в базе данных.
Наша первая команда — создать таблицу Shows .
Используйте метод cursor.execute() , чтобы написать запрос CREATE TABLE.
cursor.execute('''CREATE TABLE IF NOT EXISTS Shows (Title TEXT, Director TEXT, Year INT)''')
В этом коде мы написали команду, которая создаст таблицу с ее именами столбцов и типами данных.
Шаг 4: Зафиксируйте эти изменения в базе данных.
Чтобы зафиксировать изменения в базе данных, используйте метод connection.commit() .
connection.commit()
Шаг 5: Закройте соединение.
Последний шаг — закрыть соединение с помощью функции connection.close() .
connection.close()
Вот и все. См. следующий полный код для создания базы данных SQLite на Python.
import sqlite3 connection = sqlite3.connect('shows.db') cursor = connection.cursor() cursor.execute('''CREATE TABLE IF NOT EXISTS Shows (Title TEXT, Director TEXT, Year INT)''') connection.commit() connection.close()
После запуска файла вы увидите, что в вашем текущем каталоге проекта создан один файл с именем shows.db. Это файл базы данных SQLite, созданный Python.
Вывод
Вы можете видеть, что подключить Python к базе данных SQLite очень просто, и управлять данными из кода Python также легко. Вам необходимо хорошо разбираться в SQL, и это все, что вам нужно для работы с реляционной базой данных. Это все для Python с базой данных SQLite.
Источник:
Базы данных
Здравствуйте, здесь и сейчас я хочу рассказать, что такое базы данных, зачем они нужны, и т.д.; для работы с ними мы будем использовать python и его библиотеку sqlite3.
База данных — совокупность данных, хранимых в соответствии со схемой данных, манипулирование которыми выполняют в соответствии с правилами средств моделирования данных
Так нам говорит Яндекс, но если сказать простыми словами, не углубляясь во все эти понятия, то:
Базы данных (БД) — библиотека, хранящая данные в том или ином виде.
То есть как в библиотеку мы можем прийти и взять книгу «Война и мир», зная что она будет лежать в разделе романов, на букву «В», так и из БД мы можем взять запись по определённому аргументу, в данном случае жанру.
И тут возникает вопрос.
Как это сделать?
И что бы ответить на этот вопрос, мы должны кое-что узнать.
Как хранятся данные в базах данных
Сначала нужно понять, что БД делятся на:
Сетевые и иерархические БД:
Такие БД представляют собой графы и хранят информацию в них же.
- Иерархические — древовидный граф
- Сетевые — полный граф
Данные БД здесь мы рассматривать не будем. Поэтому перейдём к реляционной БД.
Реляционные базы данных
Реляционные БД — БД, в которых данные хранятся в виде таблицы, например Exel.
SQL — именно реляционная БД, и все данные в ней хранятся, в виде таблицы. Например такой:
Я думаю что, на вопрос мы ответили, и можно идти дальше.
Зачем нужны базы данных?
За всю жизнь, человечество накопила невероятно много информации, а БД, как мы знаем собирают, и сортирует эту информацию по таблицам (в нашем случае). И БД помогают абсолютно спокойно ориентироваться во всей этой куче информации, добавлять её туда, изменять и т.д.;
Из теории в практику
Сейчас мы пойдём в практику, но перед этим хотелось бы уточнить кое-что. Сверху я написал такую строку:
SQL — именно реляционная БД, и все данные в ней хранятся, в виде таблицы.
И как вы понимаете, это неверно.
SQL — это структурированный язык запросов (structured query language). Грубо говоря это язык программирования, позволяющий управлять Базами данных, таблицами в них и т.д.
Мой косяк исправили, идём в практику!
Установка sqlite3
Да, это смешно, но мало ли кому-нибудь понадобится
Я не буду описывать алгоритм установки, ведь это давно сделали за меня, если вам нужно установить данный модуль, то просьба идти вот сюда.
Создание первой БД
import sqlite3 as sql con = sql.connect('test.db') with con: cur = con.cursor() cur.execute("CREATE TABLE IF NOT EXISTS `test` (id INTEGER)") con.commit()
Сначала импорт, потом «con =».
Объясняю, sql.connect(«test.db») — создает файл с именем «test.db», если запустили впервые. То есть принимает на вход путь до файла с расширением .db
cur = con.cursor — позволит нам производить операции с БД, остальное не важно.
cur.execute(. ) — создаёт таблицу с именем тест и всего 1 колонкой id, в которой все данные — числа
commit() — грубо говоря, сохранение БД
А давайте создадим программу, которая запрашивает имя и фамилию, и записывает их в БД, а потом по выбору цифр либо выводит, либо записывает снова.
import sqlite3 as sql print("1 - добавление\n2 - получение") choice = int(input("> ")) con = sql.connect('test.db') with con: cur = con.cursor() cur.execute("CREATE TABLE IF NOT EXISTS `test` (`name` STRING, `surname` STRING)") if choice == 1: name = input("Name\n> ") surname = input("Surname\n> ") cur.execute(f"INSERT INTO `test` VALUES ('', '')") elif choice == 2: cur.execute("SELECT * FROM `test`") rows = cur.fetchall() for row in rows: print(row[0], row[1]) else: print("Вы ошиблись") con.commit() cur.close()
Стандартные моменты пропустим.
cur.execute(«INS. ») — Добавление данных
cur.execute(«SeL. ») — Получение данных. И так как там отдаётся массив, то мы его перебираем, а после ещё и из кортежа данные берём.
«SELECT», «INSERT», «DROP» и т.д. — это всё SQL.
cur.fetchall() — это что бы в переменную записалось всё, что пришло из БД.
Вывод
Базы данных — важная и очень нужная вещь. Здесь мы затронули настолько её малую часть, что аж смешно. Поэтому чтобы действительно узнать как это работает, советую почитать об этом всём в интернете, благо информации много. Удачи!
Как создать базу данных 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
- Основы анализа данных с Pandas
Материалы по теме
- Python, Tkinter и SQL: разрабатываем приложение для создания словарей и запоминания иностранных слов
- Как подружить Python и базы данных SQL. Подробное руководство
- SQL за 20 минут
Встроенная база данных Python
Перед началом статьи хочу сказать, что еще больше полезной и нужной информации вы найдете в нашем Telegram-канале. Подпишитесь, мне будет очень приятно.
Если вы разработчик программного обеспечения, то, скорее всего, вы знакомы с невероятно легкой базой данных SQLite или даже уже использовали ее. Она содержит практически все функции реляционной базы данных и представлена всего одним файлом. На официальном сайте можно найти несколько сценариев применения SQLite:
- встроенные устройства и интернет вещей;
- анализ данных;
- передача данных;
- архив файлов и/или контейнер данных;
- внутренние или временные базы данных;
- замена корпоративной базы данных в период демо-версий или тестирования;
- обучение и тестирование;
- экспериментальные расширения языка SQL.
Если вам нужна SQLite для каких-либо других целей, то обратитесь к документации.
Но самое главное — SQLite встроена в библиотеку Python. То есть вам не нужно устанавливать серверное или клиентское ПО и поддерживать работу какого-либо сервиса. Если вы импортировали библиотеку в Python и приступили к работе, значит вы уже используете систему управления реляционными базами данных!
Импортирование и использование
«Встроенность» предполагает, что вам не нужно запускать pip install для получения библиотеки. Просто импортируйте ее с помощью:
import sqlite3 as sl
Создание соединения с БД
Не беспокойтесь о драйверах, строках подключения и т.д. Вы можете создать базу данных SQLite и задать такой простой объект подключения, как:
После запуска этой строки кода происходит создание с БД и активируется подключение к ней. Дело в том, что базы данных, к которой мы просим подключиться Python, не существует, поэтому он автоматически создает пустую. Также мы можем ввести точно такой же код для подключения к уже существующей базе данных.
Создание таблицы
Теперь создадим таблицу:
with con: con.execute(«»» CREATE TABLE USER ( id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER ); «»»)
Мы добавили три столбца в таблицу USER. Как видите, SQLite действительно легка и при этом поддерживает все основные функции обычной реляционной СУБД, такие как тип данных, обнуляемый тип, первичный ключ и автоинкремент.
После запуска этого кода создается таблица, но она ничего не выводит.
Включение записей
Вставим несколько записей в только что созданную таблицу USER, чтобы доказать, что она действительно создана.
Предположим, мы хотим вставить сразу несколько записей. Выполним:
sql = ‘INSERT INTO USER (id, name, age) values(?, ?, ?)’ data = [ (1, ‘Alice’, 21), (2, ‘Bob’, 22), (3, ‘Chris’, 23) ]
Определяем оператор SQL с вопросительными знаками ? в качестве заполнителя. Теперь создадим образцы данных для вставки, а затем вставим их с помощью объекта подключения:
with con:
con.executemany(sql, data)
После запуска кода не появилось никаких предупреждений, значит все прошло успешно.
Запрос к таблице
Пришло время удостовериться, что все сделано правильно. Выполним запрос к таблице на возврат образцов строк.
with con: data = con.execute(«SELECT * FROM USER WHERE age <= 22") for row in data: print(row)
Как видите, все очень просто!
Более того, несмотря на свою легкость SQLite является широко используемой базой данных, и большинство программного обеспечения клиентов SQL ее поддерживает.
Чаще всего я использую инструмент DBeaver. Рассмотрим его на примере.
Подключение к базе данных SQLite из клиента SQL (DBeaver)
Поскольку я использую Google Colab, я буду загружать файл my-test.db на свой компьютер. При запуске Python на локальном компьютере можно использовать клиент SQL для прямого подключения к файлу баз данных.
Создаем новое соединение в DBeaver и выбираем SQLite в качестве типа БД:
Затем переходим к файлу БД:
Теперь к базе данных можно выполнить любой SQL-запрос, как и в любых других реляционных БД:
Непрерывная интеграция с Pandas
Но это еще не все. Дело в том, что, являясь встроенной функцией Python, SQLite может легко интегрироваться с фреймом данных Pandas.
Определяем фрейм данных:
df_skill = pd.DataFrame(< 'user_id': [1,1,2,2,3,3,3], 'skill': ['Network Security', 'Algorithm Development', 'Network Security', 'Java', 'Python', 'Data Science', 'Machine Learning'] >)
Затем просто вызываем метод фрейма данных to_sql(), чтобы сохранить его в базе данных:
И это все, что нужно сделать! Вам даже не придется создавать таблицу заранее — типы данных и длина столбцов будут определены автоматически. Конечно, при желании вы также можете определить ее заранее.
Допустим, мы хотим объединить таблицу USER и SKILL и прочитать результат во фрейме данных Pandas. Это тоже можно выполнить без проблем.
df = pd.read_sql(»’ SELECT s.user_id, u.name, u.age, s.skill FROM USER u LEFT JOIN SKILL s ON u.id = s.user_id »’, con)
Результаты запишем в новую таблицу под названием USER_SKILL:
Теперь мы также можем использовать клиент SQL для получения таблицы:
В Python есть множество скрытых сюрпризов. Но скрыты они не специально: дело лишь в том, что в Python настолько много функций «из коробки», что невозможно раскрыть их все сразу.
В этой статье мы узнали, как использовать встроенную библиотеку Python sqlite3 для создания таблиц и манипулирования ими в базе данных SQLite. Конечно, она также поддерживает обновление и удаление, которые вы можете попробовать самостоятельно.
Но самое главное, мы можем легко прочитать таблицу из базы данных SQLite во фрейме данных Pandas и наоборот. Такая возможность еще больше упрощает взаимодействие с этой легкой реляционной базой данных.
Возможно, вы заметили, что в SQLite нет аутентификации. С ней бы данная библиотека перестала быть такой легкой.
Открывайте для себя еще больше удивительных возможностей Python!
Весь код из этой статьи находится в моем Google Colab Notebook.
