Блог did5.ru

Про АйТи и около айтишные темы

Как работать с базой SQLite3 в OpenWrt

Комментариев нет

Есть роутер TP-Link TL-MR3020 c прошивкой OpenWrt версии 12.09, весь софт перенесен на флешку, стандартный вебсервер заменен на LightHTTPD, подключен 3G модем, настроен VPN и установлены PHP3 и SQLite3.

Теперь разбираемся с тем, как взаимодействовать с базой данных SQLite3. Есть три способа:

1. SQLite3 Command Line, т.е. через консоль OpenWrt.

Для возможности работы через консоль был установлен пакет sqlite3-cli в прошлой заметке (opkg install sqlite3-cli).

Для запуска CLI вводим в консоле sqlite3 <имя базы>.db. Создастся файл базы данных в текущем каталоге, а если он там уже существет с таким именем, то просто произойдет подключение.

sqlite cli openwrt 1 thumb Как работать с базой SQLite3 в OpenWrt

Таблицу можно создать командой:

CREATE TABLE temp (id integer primary key, date text, temp text);

Внести данные в таблицу:

INSERT INTO temp (id, date, temp) values (1, '2014-12-05 10:10:00', '25.5');

Индификтор (id) можно не указывать, он будет выставляться автоматически, а просто задавать значения остальных полей:

INSERT INTO temp (date, temp) values ('2014-12-05 10:10:00', '25.5');

Перед выводом информации меняем режим отображения на колонки:

.mode columns

Вывод все информацию из таблицы temp:

SELECT * FROM temp;

Удаляем тестовую таблицу temp:

DROP TABLE temp;

Смотрим список таблиц в базе:

.schema

В базе пусто, т.к. я удалил единственную таблицу.

Это основные команды для работы SQLite3, остальное ищем в документации.

2. SQLite3 в bash

Второй способ взаимодействия с базой через скрипт на bash. Тестовый скрипт vi sqlite.sh:

sqlite cli openwrt 2 thumb Как работать с базой SQLite3 в OpenWrt

DATE=$(date '+%Y-%m-%d %H:%M:%S');
sqlite3 test.db "CREATE TABLE temp (id integer primary key, date text, temp text);"
sqlite3 test.db "INSERT INTO temp (id, date, temp) values (2, '2014-12-04 13:27:00', '21.5')"
sqlite3 test.db "INSERT INTO temp (date, temp) values ('$DATE', '21.2')"

Делаем скрипт исполняемым:

chmod 755 sqlite.sh

Запускаем скрипт и смотрим результат через CLI:

./sqlite.sh
sqlite3 test.db

В CLI выгружаем все из таблицы temp:

SELECT * FROM temp;

sqlite cli openwrt 3 thumb Как работать с базой SQLite3 в OpenWrt

Видим обе записи, которые внесли через скирпт sqlite.sh.

3. SQLite3 через PHP5

Для примера покажу как выводить информацию из базы и отображать в браузере. Создал файл query.php в каталоге /www/home/test:

<?php
$db = new SQLite3('test.db');
$results = $db->query('SELECT * FROM temp');
while ($row = $results->fetchArray()) {
echo "Date: $row[date] temperature: $row[temp]\n <br/>";
}
?>

sqlite cli openwrt 4 thumb Как работать с базой SQLite3 в OpenWrt

Проверяем результат:

sqlite cli openwrt 5 thumb Как работать с базой SQLite3 в OpenWrt

Если данные из базы видим в браузере, значит все работает.

Нашли опечатку в тексте? Пожалуйста, выделите ее и нажмите Ctrl+Enter! Спасибо!


Хотите поблагодарить автора за эту заметку? Вы можете это сделать!


Автор: did5

05 Дек 2014 в 14:47

Рубрика: IT

Метки: , , ,

Ваш отзыв