Как редактировать файл sqlite

Обновлено: 07.07.2024

SQLite - это библиотека, написанная на языке C, которая обеспечивает работу с SQL. Данный инструмент относится к Реляционным системам управления базами данных. Большинство баз данных SQL работает по схеме клиент/сервер. Возьмём к примеру MySQL. В процессе работы данные берутся с MySQL сервера, и отправляются в качестве ответа на запрос. В случае использования SQLite, данные будут браться непосредственно с диска, т.е. не будет необходимости обращаться к серверу.

Установка

Мы будем взаимодействовать с базой данных через интерфейс командной строки sqlite3 (CLI) в Linux. Работа с sqlite3 CLI в MAC OS и Windows осуществляется таким же образом, однако я рекомендую вам потратить 5 минут на установку виртуальной машины, чтобы не захламлять свой компьютер лишним софтом.

Для установки sqlite3 на Linux выполняем команду:

sudo apt-get install sqlite3 libsqlite3-dev

В результате на вашей машине будет установлен sqlite3. Для установки данного инструмента на других ОС следуйте инструкциям. Для запуска sqlite выполняем команду sqlite3 в консоли. Результат должен быть таким:


Во второй строчке указана подсказка о том, что для получения справки необходимо выполнить команду .help . Давайте сделаем это. В результате мы увидим Мета Команды и их описание.

Мета Команды

Мета Команды - предназначены для формирования таблиц и других административных операций. Все они оканчиваются точкой. Пройдёмся по списку команд, которые могут пригодиться:

Команда Описание
.show Показывает текущие настройки заданных параметров
.databases Показывает название баз данных и файлов
.quit Выход из sqlite3
.tables Показывает текущие таблицы
.schema Отражает структуру таблицы
.header Отобразить или скрыть шапку таблицы
.mode Выбор режима отображения данных таблицы
.dump Сделать копию базы данных в текстовом формате

Стандартные команды

Теперь давайте пройдёмся по списку стандартных команд sqlite3, которые предназначены для взаимодействия с базой данных. Стандартные команды могут быть классифицированы по трём группам:

  • Язык описания данных DDL: команды для создания таблицы, изменения и удаления баз данных, таблиц и прочего.

Заметка: SQLite так же поддерживает и множество других команд, список которых можно найти тут. Поскольку данный урок предназначен для начинающих, мы ограничимся перечисленным набором команд.

Файлы баз данных SQLite являются кроссплатформенными. Они могут располагаться на различного рода устройствах.

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

Из всех этих полей только адрес сайта может быть пустым. Так же можем ввести колонку для нумерации комментриев. Назовём её post_id .

Теперь давайте определимся с типами данных для каждой из колонок:

Атрибут Тип данных
post_id INTEGER
name TEXT
email TEXT
website_url TEXT
comment TEXT

Тут вы сможете найти все типы данных, поддерживаемые в SQLite3.

Так же следует отметить, в SQLite3 данные, вставляемые в колонку могут отличаться от указанного типа. В MySQL такое не пройдёт.

Теперь давайте создадим базу данных. Если вы ещё находитесь в интерфейсе sqlite3, то наберите команду .quit для выхода. Теперь вводим:

В результате, в текущем каталоге у нас появится файл comment_section.db.

Заметка: если не указать название файла, sqlite3 создаст временную базу данных.

Создание таблицы

Для хранения комментариев нам необходимо создать таблицу. Назовём её comments . Выполняем команду:

NOT NULL обеспечит уверенность, что ячейка не будет содержать пустое значение. PRIMARY KEY и AUTOINCREMENT расширяют возможности поля post_id.

Чтобы убедиться в том, что таблица была создана, выполняем мета команду .tables . В результате видим нашу таблицу comments .


Заметка: Для получения структуры таблицы наберите .schema comments

Теперь можем внести данные в таблицу.

ВСТАВКА СТРОК

Предположим, что нам необходим внести следующую запись:

Для вставки воспользуемся командой INSERT.

Указывать значение для post_id не нужно т.к. оно сформируется автоматически благодаря настройке AUTOINCREMENT .

Чтобы набить руку можете вставить ещё несколько строк.

ВЫБОРКА

Для выборки данных воспользуемся командой SELECT.

Этот же запрос может выглядеть так:


Для отображения шапки введите .headers ON .

Для отображения колонок выполните команду .mode column .

Выполняем SELECT запрос ещё раз.


Заметка: вид отображения можно изменить, воспользовавшись мета командой .mode .

ОБНОВЛЕНИЕ

В результате запись будет изменена.

УДАЛЕНИЕ

Для выполнения команды DELETE нужно так же указать условие.

К примеру нам необходимо удалить комментарий с post_id = 9. Выполняем команду:

Для удаления комментариев пользователей ‘Bart Simpson’ и ‘Homer Simpson’ выполним:

ИЗМЕНЕНИ СТРУКТУРЫ

Для добавления новой колонки следует использовать команду ALTER. К примеру введём поле username. Выполняем команду:

Данная команда создаст новое текстовое поле в таблице comments . Для всех сток в качестве значения будет выставлено NULL.

Так же мы можем использовать команду ALTER для переименования таблицы comments на Coms .

УДАЛЕНИЕ

Для удаление нашей таблицы выполните следующую команду:

Заключение

SQLite3 даёт множество преимуществ в отличии от других СУБД. Множество фрэймворков таких как Django, Ruby on Rails и web2py по умолчанию используют SQLite3. Многие браузеры используют данный инструмент для хранения локальных данных. Так же она используется в качестве хранилища данных таких ОС как Android и Windows Phone 8.

Для работы с SQLite3 можно воспользоваться и программами с графическим интерфейсом. К примеру: DB Browser for SQLite и SQLiteStudio. Для тренировки работы с SQL можете поиграть с SQL Fiddle.

Данный урок может помочь стартовать с SQLite3. Для взаимодействия с данным СУБД в PHP можем воспользоваться расширением PDO.

5 последних уроков рубрики "Разное"

Как выбрать хороший хостинг для своего сайта?

Выбрать хороший хостинг для своего сайта достаточно сложная задача. Особенно сейчас, когда на рынке услуг хостинга действует несколько сотен игроков с очень привлекательными предложениями. Хорошим вариантом является лидер рейтинга Хостинг Ниндзя — Макхост.

Как разместить свой сайт на хостинге? Правильно выбранный хороший хостинг - это будущее Ваших сайтов

Разработка веб-сайтов с помощью онлайн платформы Wrike

Создание вебсайта - процесс трудоёмкий, требующий слаженного взаимодействия между заказчиком и исполнителем, а также между всеми членами коллектива, вовлечёнными в проект. И в этом очень хорошее подспорье окажет онлайн платформа Wrike.

20 ресурсов для прототипирования

Подборка из нескольких десятков ресурсов для создания мокапов и прототипов.

Топ 10 бесплатных хостингов

Небольшая подборка провайдеров бесплатного хостинга с подробным описанием.


SQLite — это автономная база данных без сервера SQL. Ричард Хипп, создатель SQLite, впервые выпустил программное обеспечение 17 августа 2000 года. С тех пор оно стало вторым по популярности ПО в мире. Его используют даже в таких важных системах, как Airbus A350. Кстати, программа вместе со всеми библиотеками весит всего несколько мегабайт.

Для запуска SQLite 3, в командной строке нужно прописать следующее:

Вы можете изменить заданные по умолчанию настройки CLI SQLite 3, отредактировав файлы

/.sqliterc в директории. Это удобно для сохранения настроек, которые вы часто используете (рецептов). Вот пример:

Вы можете импортировать CSV-данные в SQLite 3 с помощью двух команд. Первая переводит клиент в CSV, а вторая импортирует данные из CSV-файла. Предполагаемый разделитель можно менять с помощью команды .separator.

Если таблицы назначения еще не существует, первая строка CSV-файлов будет использоваться для именования каждого из столбцов. Если таблица существует, то все строки данных будут добавлены в существующую таблицу.

В качестве примера я собрал несколько аэропортов Уэльса в CSV-файл с разными кодировками.

Я запустил в клиенте SQLite 3 новую базу данных под названием airport.db. Этого файла базы данных еще не существовало, поэтому SQLite 3 автоматически создал его для меня.

Я переключил клиент в режим CSV, установил запятую разделителем, а затем импортировал файл airport.csv.

Теперь появляется возможность запустить команду schema в таблице новых аэропортов, видим два столбца с названиями на японском языке и ещё два — с использованием ASCII-символов.

Без проблем можно давать команды, смешивая кодировки.

Кроме того, можно сбросить базу данных на SQL с помощью лишь одной команды.

Имейте в виду, что созданные файлы .db могут быть слишком большими. Во время написания этой статьи у меня получился CSV-файл с миллионом рядов и 12 столбцами, состоящий в основном из чисел и одного текстового поля. Сжатый CSV-файл с GZIP весил 41 МБ, распакованный CSV — 142 МБ, а при импорте в SQLite 3 — .db-файл — 165 МБ. Я смог с GZIP сжать файл .db до 48 МБ, но, к сожалению, SQLite 3 не может открывать базы данных, сжатые GZIP.

Локальность данных может быть значительно улучшена за счет хранения базы данных SQLite 3 в памяти, а не на диске. Ниже приведен пример, где я вычисляю 10 значений Фибоначчи и сохраняю их в базе данных SQLite 3, находящейся в памяти, с использованием Python 3.

Вы можете создавать пользовательские функции в Python, которые будут выполняться с использованием данных, находящихся внутри БД SQLite 3. Ниже приведена небольшая база данных SQLite 3:

Затем я создал функцию на Python, которая извлекает имя хоста из URL-адреса и выполняет действия, ориентируясь на таблицу.

Вот что выводится при вызове функции fetchall:

Клиент SQLite 3 способен работать с несколькими базами данных за один сеанс. Ниже я запустил клиент и подключил две базы данных.

Затем я запустил команду .databases для вывода имен и мест баз данных.

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

Jupyter Notebooks — популярная программа для визуализации данных. Ниже можно посмотреть процесс настройки и несколько примеров визуализаций.
Для начала я установил ряд системных зависимостей.

Затем я создал виртуальную среду Python, чтобы можно было отделить зависимость Python от других проектов и назвал её .taxis.

Я обновил менеджер пакетов «pip» Python до версии 9.0.1 в этой виртуальной среде.

Затем я установил несколько популярных Python-библиотек.

Затем я включил расширение gmaps и разрешил Jupyter использовать виджеты.

После этого я запустил сервер Notebook. Вы увидите URL-адрес, содержащий параметр токена. Чтобы запустить Notebook (не ПК, конечно же), откройте ссылку в веб-браузере.

Перед открытием URL-адреса я создал базу данных SQLite 3 из CSV-файла. Здесь содержится около миллиона случайных записей о поездках на такси. Чтобы экспортировать эти записи из Hive, я сделал следующее:

В моём блоге есть краткие инструкции по импорту набора данных в Hive. Если использовать инструкции не на ОС Raspbian, а на других, то имена пакетов, например, для JDK, вероятно, будут отличаться.

Вот первые три строки этого CSV-файла. Обратите внимание: первая строка содержит имена столбцов.

Я распаковал GZIP-файл, запустил SQLite 3, добавил trip.db в качестве параметра.

Затем переключился в режим CSV, убедился в том, что разделителем является запятая, и что импортирует CSV-файл в таблицу маршрутов.

Настроили, что дальше?

С импортированными данными я открыл Notebook URL-адрес и создал Python 3 Notebook в интерфейсе Jupyter’а. Теперь необходимо вставить следующее в первую ячейку, одновременно зажать shift и кнопку выполнения.

Код выше будет импортировать Pandas, библиотеку Python для SQLite 3, Holoviews — библиотеку обработки данных, библиотеку визуализации, а затем инициализировать расширение Bokeh для Holoviews. Наконец, будет установлено соединение с базой данных SQLite 3 с информацией о поездках на такси.

В следующем примере я привел код, который создаст heatmap для разбивки поездок по дням и часам.

Ниже приводится линейная диаграмма, показывающая количество поездок такси.

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

Ниже приводится круговая диаграмма, показывающая зависимость поездок от времени суток.

Чтобы создать диаграмму матрицы рассеивания, выполните действия как в коде ниже. Заметьте, что это может занять несколько минут. Сначала будет показан массив данных, а потом и сам график.

Я натолкнулся на два способа отображения географических точек на картах. Первый — с Matplotlib и Basemap, которые будут работать в автономном режиме, без необходимости использовать API-ключи. Ниже будут указаны точки сбора для маршрутов такси в наборе данных.

Да, это выглядит несколько примитивно.

Следующий код построит heatmap поверх Google Maps виджета. Недостатком является то, что вам нужно будет создать связанный с Google API-ключ и подключаться к Интернету, когда вы его используете.

Pandas DataFrames отлично подходят для создания производных наборов данных с минимальным количеством кода. Кроме того, сброс Pandas DataFrames обратно в SQLite 3 очень прост. В этом примере я заполнил DataFrame некоторыми CSV-данными, создал новую базу данных SQLite 3 и выгрузил DataFrame в этот файл.

SQLite 3 — не игрушка, а мощное SQL-расширение. Поскольку скорость хранения и производительность одного ядра в процессорах увеличивают объем данных, SQLite 3 продолжает развиваться.

Я определенно считаю SQLite 3 одной из наиболее удобных баз данных, и я решаю значительное количество задач с его помощью.

Часть 10.6: Модификация и обновление данных в таблицах базы данных SQLite

Модификация и обновление данных в таблицах базы данных SQLite

Модификация и обновление данных в таблицах базы данных SQLite

В этой записи мы с вами разберемся с синтаксисом операции изменения данных в таблицах и рассмотрим несколько примеров. Сперва будет пара простых примеров модификации данных в таблицах SQLite3. Затем мы посмотрим, как отфильтровать данные, перед тем, как будем их модифицировать. После чего мы с вами разберемся с тем, как изменить данные сразу в нескольких столбцах таблицы базы данных SQLite. Далее будет пример изменения значений во всех строках таблицы. И напоследок мы рассмотрим, как упорядчить ограничить количество строк для модификации данных.

Надеюсь, что публикация получилась понятной и написана она на доступном языке, но, как обычно, если есть какие-либо уточнения или что-то было непонятно — пишите в комментариях, обсудим вместе.

Изменение и модификация данных в таблицах базы данных SQLite3

Мы рассмотрели работу различных операторов манипуляции данными и операторов определения данных в базах данных SQLite, но при работе с таблицами базы данных SQLite мы можем еще изменять и модифицировать данные. Пожалуйста, не путайте операцию модификации данных в таблицах баз данных с операцией модификации таблиц, последняя выполняется при помощи команды ALTER.

Так же не стоит путать SQL команды с SQL операторами, среди русскоговорящих разработчиков принято заменять термин команда на термин оператор, хотя это и не одно и то же, если быть формально точным. Модификация или обновления данных в базах данных SQLite выполняется командой UPDATE, хотя вы можете использовать словосочетание оператор UPDATE, большой ошибки не будет.

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

Синтаксис операции изменения данных в таблицах баз данных под управлением SQLite представлен на рисунке ниже. Заметим, что синтаксис модификации данных в таблицах SQLite поддерживает операции, позволяющие избежать конфликтов модификации, но об этом мы поговорим в специально отведенной теме.

Синтаксис обновления и модификации данных в таблицах баз данных SQLite3

Ключевое слово UPDATE говорит SQLite о том, что мы хотим изменить данные в таблице, далее нам нужно указать SQLite3 имя таблицы, данные которой мы будем модифицировать, в том случае когда у вас подключено несколько баз данных, вы можете использовать квалификатор или полное имя таблицы, который помимо имени таблицы содержит еще и имя базы данных этой таблицы.

После имени таблицы следует ключевое слово SET, которое позволяет указать имя столбца, в котором мы хотим изменить данные. После ключевого слова SET идет знак равно, после которого мы пишем новое значение, которое хотим поместить в базу данных. А далее самое интересное: клаузула WHERE (уточняющая фраза WHERE), с помощью которой мы задаем условия, которые позволят выбрать строки, в которых данные будут модифицированы.

Перед изменением данных в таблице SQLite позволяет эти данные упорядочить и ограничить количество строк, которые будут модифицированы. SQLite3 позволяет модифицировать данные сразу в нескольких столбцах таблицы при этом столбцы и их модфикационные значения разделяются запятой, а условия выбора строки для модификации следует после перечисления всех необходимых столбцов.

В базах данных SQLite в качестве нового значения не обязательно указывать какую-то конкретную строку или столбец, можно использовать сложные выражения и даже SQL запросы, например, вместо значения вы можете использовать команду SELECT, причем SELECT может быть сколь угодно длинным.

Используя сложные выражения вам нужно быть аккуратным, так как SQLite – СУБД с динамической типизацией данных, поэтому тип данных в SQLite не является ограничение уровня столбца, в отличии от других реляционных СУБД. И вместо строки вы легко можете записать в столбец число, а SQLite даже не предупредит вас о том, что произошла ошибка. Давайте рассмотрим несколько примеров модификации данных в базах данных SQLite.

Простые примеры модификации данных в базах данных SQLite

Начнем с простых примеров модификации данных в таблицах баз данных SQLite. Для начала нам нужно создать таблицу при помощи команды CREATE:


SQLite – это автономный, работающий без сервера транзакционный механизм базы данных SQL. Python получил модуль sqlite3 в версии 2.5, что значит что вы можете создавать базу данных SQLite в любой настоящей версии Python, без необходимости скачивания дополнительных инструментов. Mozilla использует базы данных SQLite в своем популярном браузере Firefox для хранения закладок и прочей различной информации. В данной статье мы рассмотрим следующее:

  • Как создать базу данных SQLite
  • Как вставить данные в таблицу
  • Как редактировать данные
  • Как удалять данные
  • Базовые запросы SQL

Другими словами, вместо того чтобы собирать по кусочкам сам модуль, мы непосредственно ознакомимся с тем, как его использовать.
Если вы хотите визуально проверить свою базу данных, вы можете использовать плагин SQLite Manager в Firefox (рекомендуем погуглить данный вопрос), или, если вы предпочитаете командную строку, вы можете использовать оболочку командной строки SQLite Python.

Как создавать базу данных и вставлять различные данные

Создание базы данных в SQLite – это очень просто, но процесс требует того, чтобы вы немного разбирались в том, что такое SQL. Давайте взглянем на код, который создаст базу данных для хранения музыкальных альбомов:

Сначала нам нужно импортировать модуль sqlite3 и создать связь с базой данных. Вы можете передать название файла или просто использовать специальную строку “:memory:” для создания базы данных в памяти. В нашем случае, мы создаем его на диске в файле под названием mydatabase.db.

albums = [ ( 'Exodus' , 'Andy Hunter' , '7/9/2002' , 'Sparrow Records' , 'CD' ) , ( 'Until We Have Faces' , 'Red' , '2/1/2011' , 'Essential Records' , 'CD' ) , ( 'The End is Where We Begin' , 'Thousand Foot Krutch' , '4/17/2012' , 'TFKmusic' , 'CD' ) , ( 'The Good Life' , 'Trip Lee' , '4/10/2012' , 'Reach Records' , 'CD' ) ] cursor . executemany ( "INSERT INTO albums VALUES (. )" , albums )

Здесь мы использовали команду INSERT INTO SQL чтобы вставить запись в нашу базу данных. Обратите внимание на то, что каждый объект находится в одинарных кавычках. Это может усложнить работу, если вам нужно вставить строчки, которые содержат одинарные кавычки. В любом случае, чтобы сохранить запись в базе данных, нам нужно создать её. Следующая часть кода показывает, как добавить несколько записей за раз при помощи метода курсора executemany. Обратите внимание на то, что мы используем знаки вопроса (?), вместо строк замещения (%) чтобы вставить значения. Обратите внимание, что использование строки замещения не безопасно, так как может стать причиной появления атаки инъекций SQL . Использование знака вопроса намного лучше, а использование SQLAlchemy тем более, так как он делаете все необходимое, чтобы уберечь вас от правки встроенных одинарных кавычек на то, что SQLite в состоянии принимать.

Есть вопросы по Python?

На нашем форуме вы можете задать любой вопрос и получить ответ от всего нашего сообщества!

Telegram Чат & Канал

Вступите в наш дружный чат по Python и начните общение с единомышленниками! Станьте частью большого сообщества!

Паблик VK

Одно из самых больших сообществ по Python в социальной сети ВК. Видео уроки и книги для вас!

Редактирование и удаление записей

Возможность обновлять записи в вашей базе данных это ключ к тому, чтобы ваши данные велись аккуратно, и был полный порядок. Если вы не можете редактировать данные, тогда ваша база станет бесполезной достаточно скоро. Иногда вам, в том числе, нужно будет удалять и строки. Мы рассмотрим оба вопроса в данном разделе. Для начала, давайте немного обновимся.

Здесь мы использовали команду SQL UPDATE, чтобы обновить таблицу альбомов. Здесь вы можете использовать команду SET, чтобы изменить поле, так что в нашем случае мы изменим имя исполнителя на John Doe в каждой записи, где поле исполнителя указано для Andy Hunter. Весьма просто, не так ли? Обратите внимание на то, что если вы не подтвердите изменения, то они не будут внесены в базу данных. Команда DELETE настолько же проста. Давайте посмотрим.

Удаление еще проще, чем обновление. У SQL это занимает всего две строчки. В данном случае, все, что нам нужно сделать, это указать SQLite, из какой таблицы удалить (albums), и какую именно запись при помощи пункта WHERE. Таким образом, был выполнен поиск записи, в которой присутствует имя “John Doe” в поле исполнителей, после чего эти данные были удалены.

Основные запросы SQLite

Запросы в SQLite очень похожи на те, которые вы используете в других базах данных, таких как MySQL или Postgres. Мы просто используем обычный синтаксис SQL для выполнения запросов, после чего объект cursor выполняет SQL. Вот несколько примеров:

print ( "Here's a listing of all the records in the table:" ) for row in cursor . execute ( "SELECT rowid, * FROM albums ORDER BY artist" ) :

Первый запрос, который мы выполнили, называется SELECT *, что означает, что мы хотим выбрать все записи, подходящие под переданное имя исполнителя, в нашем случае это “Red”. Далее мы выполняем SQL и используем функцию fetchall() для получения результатов. Вы также можете использовать функцию fetchone() для получения первого результата. Обратите внимание на то, что здесь есть прокомментированный раздел, связанный с таинственным row_factory. Если вы не прокомментируете эту строку, результат вернется, так как объекты Row, подобны словарям Python и дают вам доступ к полям строк точь в точь, как и словарь. В любом случае, вы не можете выполнить назначение пункта, используя объект Row. Второй запрос очень похож на первый, но возвращает каждую запись в базе данных и упорядочивает результаты по имени артиста в порядке возрастания. Это также показывает, как мы можем зациклить результаты выдачи. Последний запрос показывает, как команда LIKE используется при поиске частичных фраз. В нашем случае, мы искали по всей таблице заголовки, которые начинаются с артикля The. Знак процента (%) является подстановочным оператором.

Подведем итоги

Теперь вы знаете, как использовать Python для создания базы данных SQLite. Вы также научились создавать, обновлять, редактировать и удалять записи, а также выполнять запросы по базе данных.


Являюсь администратором нескольких порталов по обучению языков программирования Python, Golang и Kotlin. В составе небольшой команды единомышленников, мы занимаемся популяризацией языков программирования на русскоязычную аудиторию. Большая часть статей была адаптирована нами на русский язык и распространяется бесплатно.

Читайте также: