树莓派学习笔记——SQLite *** 作简述

树莓派学习笔记——SQLite *** 作简述,第1张

概述0 前言     本文介绍如何在树莓派中利用SQLite数据库保存CPU温度数据。SQLite是一款轻量级零配置数据库,非常适合在树莓派和其他嵌入式系统中使用。SQLite文档详细资料丰富,本文不会详细解释SQLite数据库 *** 作的方方面面,只能结合具体场景按需说明。本文介绍的SQLite技巧也可以在其他平台使用,并不局限于树莓派。     本文继续折腾树莓派温度,希望从中可以玩出新花样。     0 前言 本文介绍如何在树莓派中利用sqlite数据库保存cpu温度数据。sqlite是一款轻量级零配置数据库,非常适合在树莓派和其他嵌入式系统中使用。sqlite文档详细资料丰富,本文不会详细解释sqlite数据库 *** 作的方方面面,只能结合具体场景按需说明。本文介绍的sqlite技巧也可以在其他平台使用,并不局限于树莓派。 本文继续折腾树莓派温度,希望从中可以玩出新花样。
【相关博文】 【 树莓派学习笔记——索引博文】——更多博文请关注。 【 树莓派学习笔记——获取树莓派CPU温度】 【 树莓派学习笔记——定时向yeelink上传树莓派CPU温度】
1 创建表和插入数据 新建一个名为insert.sql文件,文件具体内容如下:
PRAGMA foreign_keys=OFF;BEGIN TRANSACTION;CREATE table temps(    name TEXT DEFAulT 'RPi.cpu',tdatetime DATETIME DEFAulT (datetime('Now','localtime')),temperature NUMERIC NOT NulL);    INSERT INTO temps VALUES('RPi.cpu',datetime('Now','localtime','-3 hours'),40.1);INSERT INTO temps(name,tdatetime,temperature) VALUES('RPi.cpu','-2 hours'),40.2);INSERT INTO temps(tdatetime,temperature) VALUES(datetime('Now','-1 hours'),40.3);INSERT INTO temps(temperature)VALUES(40.4);COMMIT;
【简要说明】——若干细节请注意 【1】创建表,表中包括3个字段,分别为name,tdatetime和temperature。 【2】name DEFAulT 'RPi.cpu',name字段的默认值为'RPi.cpu',sqlite中字符串被单引号包裹。 【3】tdatetime DATETIME DEFAulT (datetime('Now',tdatetime字段默认值为当前时间。 【4】datetime('Now','localtime')中的localtime表示 本时区时间,如果没有该参数则为格林尼治时间。 【5】DEFAulT (datetime('Now','localtime') ),括号绝对不能少。DEFault中的表达式一定要被括号包裹。 【6】采用多种不同的插入方法,第一种不含字段名称,第二种包含字段名称,第三种,由于创建表格时有默认值,可以使用更简洁的插入方法,例如 INSERT INTO temps(temperature) VALUES(40.4);
2 创建表和插入数据 创建一个名为create-table.sh脚本,具体内容如下 #!/bin/sh rm -f cpu.db echo 开始插入数据 sqlite3 cpu.db < insert.sql echo 插入完成 【简要说明】 【1】数据库名称为cpu.db 【2】sqlite3 cpu.db < insert.sql 把insert.sql脚本插入到数据库中,insert.sql包括两个步骤,建立表并向表中插入数据。 【3】修改执行权限 chmod a+x create-tabel.sh,然后执行./create-table.sh 【4】sqlite也有命令行模式,但是命令没有历史查询功能,写错了还要重新写一遍,所有shell脚本指令更利于修改和尝试。
3 查询内容 【简单查询】 新建一个名为show.sh的脚本,具体内容如下 #!/bin/sh DBname="cpu.db" sqlite3 $DBname "SELECT * FROM temps;" 【简单说明】 【1】数据库名称为cpu.db。 【2】sqlite3 $DBname "select * from temps;" 查询表中所有记录。 【3】修改执行权限 chmod a+x show.sh,然后执行./show.sh 【4】执行结果如下,从结果来看插入的时间间隔一个小时,符合预期效果。 RPi.cpu|2014-08-02 17:27:47|40.1 RPi.cpu|2014-08-02 18:27:47|40.2 RPi.cpu|2014-08-02 19:27:47|40.3 RPi.cpu|2014-08-02 20:27:47|40.4
【修改时间顺序】——时间倒序输出 #!/bin/sh DBname="cpu.db" sqlite3 $DBname "select * from temps ORDER BY tdatetime DESC;" 【简单说明】 【1】ORDER BY tdatetime DESC 以tdatetime降序排列。 【2】输出结果 RPi.cpu|2014-08-02 20:27:47|40.4 RPi.cpu|2014-08-02 19:27:47|40.3 RPi.cpu|2014-08-02 18:27:47|40.2 RPi.cpu|2014-08-02 17:27:47|40.1
【限制时间】——返回最近3个小时的数据 #!/bin/sh DBname="cpu.db" sqlite3 $DBname "SELECT * FROM temps where tdatetime > datetime('Now','-3 hours') ORDER BY tdatetime ASC;" 【简要说明】 【1】datetime('Now','-3 hours') 表示当前时间3个小时之前的时间点,一定要加上localtime参数 【2】where tdatetime > datetime('Now','-3 hours') 限制条件3个小时之前到现在。 【3】输出结果如下,特别说明 *** 作的时间约为22:05。 RPi.cpu|2014-08-02 19:27:47|40.3 RPi.cpu|2014-08-02 20:27:47|40.4
【限制时间】——查询某个时间段内数据 #!/bin/sh DBname="cpu.db" sqlite3 $DBname "SELECT * FROM temps where tdatetime > datetime('2014-08-02 19:00:00') and tdatetime <= datetime('2014-08-02 20:00:00');" 【简要说明】 【1】2014-08-02 19:00:00 年必须占4个数字,其他必须占2个数字,不足时使用0不足。 【2】此处不需要增加localtime参数,具体原因未知。
5 总结 【1】创建表格时可使用DEFAulT约束,增加默认值简化插入 *** 作,避免空值。 【2】INSERT *** 作含有多种方法,根据实际情况选用。 【3】sqlite datetime函数需要指定localtime参数,指定本地时区。
6 参考资料 【1】 SQLite Date And Time Functions 【2】 Set up an SQLite database on a Raspberry Pi 【3】 SQLite column-constraint 【4】 SQLite 教程 | w3cschool菜鸟教程 总结

以上是内存溢出为你收集整理的树莓派学习笔记——SQLite *** 作简述全部内容,希望文章能够帮你解决树莓派学习笔记——SQLite *** 作简述所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1171972.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存