Raspberry Pi:Настройка/База данных SQLite на Raspberry Pi

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


Черновик


База данных SQLite на Raspberry Pi[1]

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

Что такое SQLite?

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

Это руководство объясняет, как установить SQLite на Raspberry Pi, а также показывает основные команды, позволяющие использовать SQLite в проектах RPi.

Примечание

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

Более подробно о SQLite можно почитать в официальной документации.

Настройка Raspberry Pi

О том, как начать работать с Raspberry Pi, читайте тут. О дополнительных настройках Raspberry Pi читайте тут.

Почему 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, как правило, пишутся заглавными буквами, но это необязательно. Многие предпочитают использовать заглавные буквы, потому что это делает код более читаемым.

Команда CREATE TABLE в SQL (создание таблицы)

Давайте создадим простую таблицу с 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);

Команда INSERT в SQL (вставка данных)

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

sqlite> BEGIN;
sqlite> INSERT INTO dhtreadings(temperature, humidity, currentdate, currentime, device) values(22.4, 48, date('now'), time('now'), "manual");
sqlite> COMMIT;

Команда 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 во второй раз, она вернет уже две порции данных:

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

Чтобы было понятней, представьте это как таблицу в Excel:

Здесь «id» – это номер порции данных, «temperature» – данные о температуре, «humidity» – данные о влажности, «currentdate» – текущая дата, «currenttime» – текущее время, «device» – название устройства.

Команда DROP TABLE в SQL (удаление таблицы)

Если вы хотите полностью удалить таблицу из базы данных, нужно воспользоваться командой DROP TABLE.

Внимание!

Команда ниже полностью удалит таблицу «dhtreadings».

sqlite> DROP TABLE dhtreadings;

Теперь, если вписать команду .tables...

sqlite> .tables

...она не вернет никаких данных, потому что этой таблицы больше нет.

См.также

Внешние ссылки