База данных SQLite на Raspberry Pi
В этой статье мы познакомим вас с SQLite — встроенной легковесной библиотекой, которая реализует автономный, не требующий сервера, не нуждающийся в настройке, транзакционный движок баз данных SQL. SQLite — самый распространённый движок баз данных SQL в мире, а его исходный код находится в общественном достоянии.
Нет платы Raspberry Pi? Прочитайте Лучшие стартовые наборы Raspberry Pi.
Что такое SQLite?
SQLite — это встраиваемый движок баз данных SQL. В отличие от большинства других баз данных SQL, SQLite не имеет отдельного серверного процесса. SQLite читает и записывает данные непосредственно в обычные файлы на диске. Полная база данных SQL с множеством таблиц, индексов, триггеров и представлений содержится в одном файле на диске.
В этом руководстве показано, как установить SQLite на Raspberry Pi, а также приведены основные команды для использования SQLite в ваших проектах на RPi.
Примечание
SQLite гораздо мощнее и имеет намного больше возможностей, чем то, что мы покажем ниже. Однако цель этого руководства — продемонстрировать базовый пример того, как можно хранить показания температуры и влажности в таблице SQLite. Для получения дополнительной информации вы можете ознакомиться с официальной документацией здесь.
Базовая настройка Raspberry Pi
Прежде чем продолжить чтение этого проекта, убедитесь, что на вашем Raspberry Pi установлена операционная система Raspbian.
Вы можете прочитать :doc:`Руководство по началу работы с Raspberry Pi </raspberry/rnt/getting-started-with-raspberry-pi/index>` для установки Raspbian и выполнения базовой настройки.
Почему SQLite?
Вот некоторые из особенностей, которые делают SQLite отличной базой данных:
Полная база данных SQLite хранится в одном кроссплатформенном файле на диске
SQLite очень маленький и легковесный
SQLite является автономным (не требуются внешние зависимости)
SQLite не требует отдельного серверного процесса или системы для работы (бессерверный)
SQLite поставляется с нулевой конфигурацией (настройка не требуется)
SQLite является кроссплатформенным. Он доступен на UNIX (Linux, Mac OS-X, Android, iOS) и Windows (Win32, WinCE, WinRT)
Базы данных используются для хранения информации таким образом, чтобы к ней можно было быстро и легко получить доступ. В этой статье вы создадите приложение для логирования данных с Raspberry Pi, которое сохраняет показания температуры и влажности.
Установка SQLite на Raspberry Pi
Вы можете установить SQLite на Raspberry Pi с помощью следующей команды:
pi@raspberry:~ $ sudo apt-get install sqlite3
Вам нужно будет ввести Y и нажать Enter для подтверждения установки.
После завершения установки библиотеки SQLite поставляются с оболочкой SQLite. Используйте следующую команду для запуска оболочки и создания базы данных:
pi@raspberry:~ $ sqlite3 sensordata.db
Файл sensordata.db теперь создан. После ввода приведённой выше команды появится приглашение, в котором вы можете вводить команды. Оболочка поддерживает два типа команд. Команды, начинающиеся с „.“, используются для управления оболочкой. Попробуйте ввести следующие команды:
sqlite> .help
С помощью команды „.help“ вы можете быстро ознакомиться со всеми поддерживаемыми командами и их использованием.
Для выхода из оболочки SQLite используйте команду „.quit“.
Примечание
Вы можете использовать стрелку вверх для прокрутки предыдущих команд.
Оболочка также поддерживает команды SQL, которые вы попробуете в следующем разделе.
Использование SQL для доступа к базам данных
Structured Query Language (SQL) — это язык, используемый для взаимодействия с базами данных. Он может использоваться для создания таблиц, вставки, обновления, удаления и поиска данных.
SQL работает с различными системами баз данных, такими как SQLite, MySQL и другими. SQL-операторы должны заканчиваться точкой с запятой (;).
Общепринято писать команды SQL заглавными буквами, но это не является строго обязательным. Большинство людей предпочитают использовать заглавные буквы, так как это повышает читаемость.
SQL CREATE TABLE
Начнём с создания простой таблицы с 6 столбцами, которую можно использовать для приложения логирования температуры и влажности в различных частях дома. Давайте начнём с создания таблицы:
sqlite> BEGIN;
sqlite> CREATE TABLE dhtreadings(id INTEGER PRIMARY KEY AUTOINCREMENT, temperature NUMERIC, humidity NUMERIC, currentdate DATE, currentime TIME, device TEXT);
sqlite> COMMIT;
Чтобы увидеть все таблицы, введите:
sqlite> .tables
dhtreadings
Будет возвращена только что созданная таблица с именем „dhtreadings“. Вы можете увидеть полную схему таблиц, введя:
sqlite> .fullschema
CREATE TABLE dhtreadings(id INTEGER PRIMARY KEY AUTOINCREMENT, temperature NUMERIC, humidity NUMERIC, currentdate DATE, currentime TIME, device TEXT);
SQL INSERT
Чтобы вставить новые показания температуры и влажности в базу данных, вы можете сделать следующее:
sqlite> BEGIN;
sqlite> INSERT INTO dhtreadings(temperature, humidity, currentdate, currentime, device) values(22.4, 48, date('now'), time('now'), "manual");
sqlite> COMMIT;
В следующей статье ESP8266 будет отправлять показания на веб-сервер Python, который вставляет данные в таблицу.
SQL SELECT
Для доступа к данным, хранящимся в базе данных, используется SQL-оператор SELECT:
sqlite> SELECT * FROM dhtreadings;
1|22.4|48|2017-01-26|23:43:13|manual
Пока у вас есть только одна запись, вставленная в базу данных. Вы можете вставить новую запись следующим образом:
sqlite> BEGIN;
sqlite> INSERT INTO dhtreadings(temperature, humidity, currentdate, currentime, device) values(22.5, 48.7, date('now'), time('now'), "manual");
sqlite> COMMIT;
И когда вы выполните SELECT для данных, хранящихся в таблице, он вернёт 2 записи:
sqlite> SELECT * FROM dhtreadings;
1|22.4|48|2017-01-26|23:43:13|manual
2|22.5|48.7|2017-01-26|23:43:54|manual
Для лучшего понимания вы можете сравнить таблицу SQL с таблицей Excel, которая выглядит следующим образом:
SQL DROP
Если вы хотите полностью удалить таблицу из базы данных, вы можете использовать команду DROP TABLE.
Предупреждение
Следующая команда полностью удалит таблицу dhtreadings:
sqlite> DROP TABLE dhtreadings;
Теперь, если вы введёте команду „.tables“:
sqlite> .tables
Она ничего не вернёт, потому что ваша таблица была полностью удалена.
Заключение
Мы лишь поверхностно рассмотрели то, что можно делать с SQLite. Узнайте, как публиковать показания датчиков с ESP8266, которые будут сохраняться в базе данных и отображаться на вашем веб-сервере Python: