
- ❤️ 博客主页 单片机菜鸟哥,一个野生非专业硬件IOT爱好者 ❤️
- ❤️ 本篇创建记录 2022-11-08 ❤️
- ❤️ 本篇更新记录 2022-11-08 ❤️
- 🎉 欢迎关注 🔎点赞 👍收藏 ⭐️留言 📝
- 🙏 此博客均由博主单独编写,不存在任何商业团队运营,如发现错误,请留言轰炸哦!及时修正!感谢支持!
- 🔥 Arduino ESP8266教程累计帮助过超过1W+同学入门学习硬件网络编程,入选过选修课程,刊登过无线电杂志🔥
说到数据库,一般人肯定会想到MySQL。
但是MySQL占用内存太大,部署在嵌入式设备中不一定是一个明智的选择。
SQLite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。它是一个零配置的数据库,这意味着与其他数据库不一样,您不需要在系统中配置。
就像其他数据库,SQLite 引擎不是一个独立的进程,可以按应用程序需求进行静态或动态连接。SQLite 直接访问其存储文件。
SQLite官网:https://www.sqlite.org/index.html

大概意思就是:
- SQLite是一个
C语言库,它实现了一个小型、快速、自包含、高可靠性、全功能的SQL数据库引擎。SQLite是世界上使用最多的数据库引擎。SQLite内置于几乎所有的移动电话和大多数计算机中,并捆绑在人们每天使用的无数其他应用程序中。- SQLite文件格式是稳定的、跨平台的、向后兼容的,开发人员保证至少在2050年以前保持这种格式。SQLite数据库文件通常用作在系统之间传输丰富内容的容器,并作为数据的长期存档格式。目前有超过1万亿(1 trillion)个SQLite数据库在使用中。
- SQLite源代码在公共域中,每个人都可以自由使用。
无服务器的)非常小的,是轻量级的,完全配置时小于 400KiB,省略可选功能配置时小于250KiB基于以上特点,非常适合在树莓派和其他嵌入式系统中使用。
首先输入命令:
sudo apt-get update
sudo apt-get install sqlite3

再次输入命令:
sqlite3 -version

当前版本是 3.34.1版本。
SQLite是以文件形式存在,一个数据库就是一个文件(db文件)。
mkdir sqlite3
dpjcn.db
- sqlite3 dpjcn.db
在当前目录sqlite3下创建一个数据库文件dpjcn.db,同时挂载到SQLite3上,该文件将被 SQLite 引擎用作数据库。
如果dpjcn.db已存在就打开并挂载这个文件。
这时候我们就可以使用sqlite对应的一些命令了。
在我们的智能家居系统中有一些温度传感器,我们将这些温度传感器的数据存在这张表中。
create table temperature(
id INTEGER PRIMARY KEY,
deviceid varchar(20) default '0',
time varchar(20) default '0',
battery_voltage int default 0,
celsius_temp real default 0
);

.schema temperature
总共有5个字段:
直接输入:
insert into temperature (deviceid, time, battery_voltage, celsius_temp) values('temp001', '2020-07-28 17:25:35', 3451, 26.75);
insert into temperature (deviceid, time, battery_voltage, celsius_temp) values('temp001', '2020-07-28 17:25:45', 3454, 25.50);
insert into temperature (deviceid, time, battery_voltage, celsius_temp) values('temp001', '2020-07-28 17:25:55', 3453, 24.35);




查询id = 2的记录,将温度从25.5改成25.65





可以在命令提示符中使用 SQLite .dump 点命令来导出完整的数据库在一个文本文件中,如下所示:

PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE temperature(
id INTEGER PRIMARY KEY,
deviceid varchar(20) default '0',
time varchar(20) default '0',
battery_voltage int default 0,
celsius_temp real default 0
);
INSERT INTO temperature VALUES(1,'temp001','2020-07-28 17:25:35',3451,26.749999999999998223);
INSERT INTO temperature VALUES(2,'temp001','2020-07-28 17:25:45',3454,25.499999999999998223);
INSERT INTO temperature VALUES(3,'temp001','2020-07-28 17:25:55',3453,24.350000000000000532);
COMMIT;
这里就是一个sql执行语句,很多情况下我们可以在本地写好这个语句文件,然后直接导入到sqlite里面执行,不需要自己一个个字符输入。
删除表
drop table temperature;
通过简单的方式从生成的 dpjcn.sql 恢复
sqlite3 dpjcn.db < dpjcn.sql

通过这种sql文件的方式,我们可以把我们本地的数据直接复制一份给到其他设备。比如创建一个dpjcn.sh脚本:
#!/bin/sh
DBNAME="dpjcn.db"
rm -f $DBNAME
echo 开始插入数据
sqlite3 $DBNAME < dpjcn.sql
echo 插入完成
注意:
chmod a+x dpjcn.sh增加可执行权限

直接执行脚本试试。

sqlite非常适合在树莓派和其他嵌入式系统中使用,对于我们学习来说还是有必要学习一番,最好是结合sqlite语法来操作学习,后续结合服务器开发使用。