python创建sqlite3数据库_树莓派使用 Python + SQLite 建立温度数据库

20170207145829868-0.jpg

相比 MySQL 而言,SQLite 更为轻便、易于维护和部署。本文使用Python向SQLite数据库中插入树莓派温度数据,SQLite数据库中包含一张只包含三个字段的记录表——参数名称,时间和温度值。本文重点解释Python操作SQlite的具体方法,由于网上资料众多,重复部分不再复述只做到具体情况具体分析。

1 创建数据库和空表

【create-table-only.sql】

PRAGMA foreign_keys=OFF;

BEGIN TRANSACTION;

CREATE TABLE temps(

name DEFAULT 'RPi.CPU',

tdatetime DATETIME DEFAULT (datetime('now', 'localtime')),

temperature NUMERIC NOT NULL

);

COMMIT;

【简要说明】

【1】数据库包含三个字段,其中两个字段有默认值。

【2】温度值不能为空。

【3】DEFAULT与NOT NULL约束配合,简化插入操作。

【create-table-only.sh】

#!/bin/sh

DBNAME="cpu.db"

rm -f $DBNAME

echo 开始插入数据

sqlite3 $DBNAME < create-table-only.sql

echo 插入完成

【简要说明】

【1】chmod a+x create-table-only.sh增加可执行权限

【2】运行之后在同目录下创建名为cpu.db的数据库

2 Python插入操作

新建一个名为db-insert-temp.py的文件,具体内容如下

#!/usr/bin/env python

# -*- coding: utf-8 -*-

import time

import sqlite3

def get_cpu_temp():

# 打开文件

file = open("/sys/class/thermal/thermal_zone0/temp")

# 读取结果,并转换为浮点数

temp = float(file.read()) / 1000

# 关闭文件

file.close()

return temp

def insert_cpu_temp(temp):

# 连接数据库

conn=sqlite3.connect('cpu.db')

curs=conn.cursor()

# 插入数据库

strtemp = "%.1f" %(temp);

curs.execute("INSERT INTO temps(temperature) VALUES((?))", (strtemp,))

conn.commit()

# 关闭数据库

conn.close()

def main():

while True:

temp = get_cpu_temp()

insert_cpu_temp(temp)

time.sleep(5*60)

if __name__ == '__main__':

main()

【简单说明】

【1】conn=sqlite3.connect(‘cpu.db’) 连接数据库。

【2】curs=conn.cursor() 获得游标。游标可理解为文件操作句柄,有了它就可以摆弄”cpu.db”了。

【3】重点注意curs.execute(“INSERT INTO temps(temperature) VALUES((?))”, (strtemp,))

【3.1】利用name和tdatetime的默认约束,此处仅插入温度值

【3.2】execute函数中必须使用占位符(?),不能使用字符串格式化方法。如果还有两个占位符,建议写成这样VALUES((?),(?))

【3.3】参数化查询时 (strtemp,)为Python元组数据类型,如果只有一个元素时逗号不可省略。如果含有两个参数,建议写成这样(paraA,paraB)

【4】勿忘提交操作conn.commit()

【5】勿忘关闭操作conn.close()

【查询插入结果】

可在控制台中输入 sqlite3 cpu-temp “SELECT * FROM temps;”,返回结果如下。

RPi.CPU|2014-08-03 10:40:40|48.7

RPi.CPU|2014-08-03 10:41:41|48.7

RPi.CPU|2014-08-03 10:42:41|49.2

RPi.CPU|2014-08-03 10:43:41|48.7

RPi.CPU|2014-08-03 10:44:41|48.7

RPi.CPU|2014-08-03 10:45:41|49.2

3 开机后台运行

【启动脚本】——auto-start.sh

在该目录下再新建一个auto-start.sh脚本,具体内容如下

#!/bin/bash

cd /home/pi/python-works/cpu-temp

python db-insert-temp.py &

【简单说明】

【1】python db-insert-temp.py & 后台运行db-insert-temp.py

【2】勿忘修改执行权限,chmod a+x auto-start.sh

【修改启动项】——/etc/rc.local

在最后一行exit 0之前增加

# 树莓派温度保存到数据库中

/home/pi/python-works/cpu-temp/auto-start.sh start

【重新启动树莓派】

sudo reboot

重启之后再次查看表中内容,将会发现记录一条一条增加。

4 总结

【1】python SQLite参数化操作时必须使用占位符?

【2】参数为Python元组类型,需要注意元素个数为1的情况。

【3】插入操作成功,结合Flask尝试查询操作。

5 参考资料

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/507318.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

论文笔记:推荐系统去偏(Debiased Recommendation)研究综述

1 推荐系统的偏差 出现偏差的原因&#xff1a;用户行为数据是观察所得(Observational)而不是实验所得(Experimental)&#xff0c;因此会存在各种偏差&#xff0c;如用户对物品的选择偏差、系统对物品的曝光偏差等&#xff1b;偏差带来的问题&#xff1a;不考虑偏差&#xff0c…

c++ 内存管理_Python Bindings - 从 Python 调用 C/C++

python 最被人诟病的问题是什么&#xff1f; 慢&#xff0c;这是被人诟病最多的问题&#xff0c;很少人知道具体原因&#xff0c;极少人愿意去深入了解并找到原因&#xff0c;更极少的人愿意付出时间去解决这个问题&#xff0c;很多人都是停留在抱怨吐槽阶段&#xff0c;知乎上…

python安装idle_(1)Python 安装使用IDLE

安装Windows x86 web-based installer 在线安装 Windows x86 executable installer 离线安装 x86-64 64位软件 配置环境变量path下添加 python安装路径 查看版本号&#xff1a;运行Python 输入 help()一、IDLE介绍 IDLE是Python自带简单的集成开发环境&#xff0c;安装python的…

S-MBRec学习笔记

1 动机 传统推荐系统一般只考虑购买行为&#xff0c;忽略了放入购物车、浏览行为&#xff1b;本文将购买、放入购物车、浏览三个行为一起考虑&#xff1b;考虑购买和放入购物车行为的差异&#xff0c;进行对比学习&#xff1b;考虑购买和浏览行为的差异&#xff0c;进行对比学…

小米5点位图_最新!地铁5号线、6号线部分车站文化墙设计出炉!你选哪个?

情忆汉长安、惊鸿游龙、星辰大海……这些绝美的名字属于地铁文化墙近日西安地铁5号线和6号线一期工程的6座车站文化墙设计方案新鲜出炉邀请广大市民乘客对文化墙设计进行投票并提出宝贵建议西安地铁“一站一景”一直以来&#xff0c;西安地铁因其“一站一景”的独立logo设计、精…

python 编辑距离_最小编辑距离python

1 什么是编辑距离 在计算文本的相似性时&#xff0c;经常会用到编辑距离&#xff08;Levenshtein距离&#xff09;&#xff0c;其指两个字符串之间&#xff0c;由一个字符串转成另一个所需的最少编辑操作次数。在字符串形式上来说&#xff0c;编辑距离越小&#xff0c;那么两个…

asp多表查询并显示_MySQL多表查询与事务

回顾1. DQL单表高级查询条件 where比较运算逻辑运算符in关键字between关键字if null关键字like关键字% 多个任意字符_ 单个任意字符排序 order byascdesc聚合函数count(*) 统计行&#xff0c;包括null值maxminavgsum分组 group by 分组字段 having 分组后条件过滤分页 limit 开…

Bias and Debias in Recommender System: A Survey and Future Directions学习笔记

1 引言 2006-2020发表的有关推荐系统去偏的论文统计&#xff1a; 2 推荐系统的偏差 偏差发生在推荐系统的不同阶段&#xff1a; 用户交互到生成数据的阶段&#xff1a; – 选择偏差&#xff1a; – 一致性偏差&#xff08;从众偏差&#xff09;&#xff1a; – 曝光偏差&a…

卡扇区数据教程_分享一款硬盘分区和数据恢复软件

最近有朋友留言&#xff0c;自己的硬盘被格式化了&#xff0c;没法恢复。今天给大家介绍一款解决硬盘恢复软件--DiskGenius&#xff0c;文末附下载地址&#xff0c;觉得有用点个在看吧。DiskGenius是一款功能非常强大的硬盘分区及数据恢复软件&#xff0c;算法精湛、功能强大&a…

名图1.8智能隐藏功能_7年后再度回归 全新一代名图“大”不同_搜狐汽车

本文车型速览除了文章作者的主观观点外&#xff0c;我们正尝试基于全网可查的客观数据&#xff0c;为您提供中立、客观的参考依据&#xff1a;本文部分车型速览&#xff1a;畅销车型质量排行top10展开微信扫码&#xff0c;直接一次看完附近所有城市低价(附近城市均有经销商可售…

3 vue 线条箭头_线条眉要如何处理才能更自然?

更多纹绣内容关注公众号&#xff1a;法米索半永久学堂。眉头的操作确实不是一件容易的事&#xff0c;都说万事开头难&#xff0c;很多纹绣师把握不好眉头的操作技巧&#xff0c;一不小心就会把眉头做的方了、圆了&#xff0c;总之就是非常不自然。但只要我们把眉头做好了&#…

git rebase用法_Git:Clone别人的代码之后push到自己码云上失败的解决办法

最近也是刚开始使用gitee&#xff0c;比较生疏。场景是这样的&#xff1a;clone了朋友的一份代码到自己的本地&#xff0c;然后自己想把它保存到自己的gitee 私有仓库上&#xff0c;就在gitee上面创建了一个私有的仓库&#xff0c;然后多次push都失败了&#xff0c;实践了网上提…

fpga板子怎么和电脑连_windows7台式电脑怎么连接路由器?台式win7电脑连路由器步骤...

相信还有许多在使用windows7系统&#xff0c;尽管使用很长一段时间了&#xff0c;不过对win7系统的一些功能还是不太了解。大家家里应该都有路由器&#xff0c;那么windows7台式电脑怎么连接路由器&#xff0c;下面我们就一起来看看台式win7电脑连接路由器步骤。win7台式电脑连…

英特尔核显自定义分辨率_让免费的核显更好用!英特尔酷睿集成的GPU如何优化?...

点击上方电脑爱好者关注我们在笔记本领域&#xff0c;无论是英特尔酷睿还是AMD锐龙&#xff0c;都采取了“买一赠一”的策略&#xff0c;即都在处理器内集成了性能还不赖的核显&#xff0c;虽然它们无法驾驭3A游戏大作&#xff0c;但应对《英雄联盟》级别的游戏还是不成问题的。…

python脚本式编程_Python编程入门(一)

Python编程入门&#xff08;一&#xff09;概述&#xff1a;编程语言 1.脚本编程语言★脚本编程语言如php&#xff0c;perl&#xff0c;python&#xff0c;java等为脚本编程语言&#xff0c;通常需要通过解释器解释运行。 ★python&#xff08;java&#xff09;程序的执行过程s…

for循环里面有异步操作_JS 线程与异步的那些事

已知&#xff0c;JavaScript 是单线程的&#xff0c;天生异步&#xff0c;适合 IO 密集型&#xff0c;不适合 CPU 密集型&#xff0c;但是&#xff0c;为什么是异步的喃&#xff0c;异步由何而来的喃&#xff0c;我们将在这里逐渐讨论实现。一、进程与线程1. 浏览器是多进程的它…

FDRNet: Fourier Document Restoration for Robust Document Dewarping and Recognition学习笔记

1 广告 这篇工作由字节跳动商业化技术团队与新加坡南洋理工大学合作完成。 话不都说&#xff0c;先看效果&#xff1a; FDRNet的效果看上去有点好&#xff0c;可惜没有源代码提供。 2 相关工作 2.1 几何形变恢复方法Geometric Document Restoration 由相机传感器捕获的文档…

通讯可以并联吗_工业控制知识:吃透RS485通讯的连接方式,接485总线就简单多了...

RS485被广泛使用&#xff0c;可以支持ModBus协议。由于其简单、价优、可靠和成熟&#xff0c;因此&#xff0c;被广泛应用于工业控制、智能仪器和电力通信。我们来看看RS485的一个典型组网结构&#xff1a;理论上&#xff0c;RS485总线的传输距离可以达到1200米。然而&#xff…

python编程a的x次方_「Python 面试」第四次更新

阅读本文大约需要 5 分钟。 15.说一说 GIL 前面有提到由于 Python 基于 C 语言编写的解释器中设置了一个 GIL 全局变量锁&#xff0c;该锁使得 Python 的多线程在处理 CPU 计算密集型任务时&#xff0c;同一时刻只能有一个线程在运行&#xff0c;这也是为什么说 Python 的多线程…

Exploiting Vector Fields for Geometric Rectification of Distorted Document Images学习笔记

1 广告 [1] Exploiting Vector Fields for Geometric Rectification of Distorted Document Images 利用矢量场对变形文档图像进行几何校正。 2018年发表在ECCV会议上的一篇非深度学习的文档去扭曲。 本文提出了一种对手持相机捕获的扭曲文档图像进行几何校正的无分段方法。…