Как работать с базой 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. Создастся файл базы данных в текущем каталоге, а если он там уже существет с таким именем, то просто произойдет подключение.
Таблицу можно создать командой:
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:
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.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/>"; } ?>
Проверяем результат:
Если данные из базы видим в браузере, значит все работает.
Нашли опечатку в тексте? Пожалуйста, выделите ее и нажмите Ctrl+Enter! Спасибо!
Хотите поблагодарить автора за эту заметку? Вы можете это сделать!