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…

不良事件总结怎么写_个人年终工作总结怎么写?

又到了年终&#xff0c;今年注定是不平凡的一年&#xff0c;大家一经历了历风风雨雨&#xff0c;突破重重艰难险阻&#xff0c;一起复工复产。今年&#xff0c;每个人的工作经历都是一部励志经典。那么年终总结怎样写才能更有说服力&#xff0c;更有深度呢&#xff1f;年终总结…

python爬取b站评论_python高效之爬了B站再爬微博

全文简介 本文是用Python爬取微博移动端的数据。可以看一下Robots协议。另外尽量不要爬取太快。如果你毫无节制的去爬取别人数据&#xff0c;别人网站当然会反爬越来越严厉。所以&#xff0c;不要难为别人&#xff0c;到最后其实是在难为你自己。至于为什么不爬PC端&#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 import io_Python——python3的io读写

前言&#xff1a;python2中的StringIO经常被用来作字符串的缓存&#xff0c;尤其是处理图片验证码的处理&#xff0c;近期牵扯tornado项目升级python3&#xff0c;简单学习了下python3中的io操作&#xff1b;因为StringIO的一些接口和文件操作是一致的&#xff0c;也就是说同样…

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

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

php 清空一个数组_php如何删除一个数组

php如何删除一个数组2020-07-10 01:16:35php删除一个数组的方法&#xff1a;1、使用unset函数删除一个数组元素&#xff0c;且保持原有索引不变&#xff1b;2、使用“array_splice”函数删除一个数组元素&#xff0c;不保持索引&#xff1b;3、使用“array_diff”函数&#xff…

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

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

pyqt按钮关闭窗口_PyQt5按钮单击事件,退出程序

1.注意项&#xff1a;当使用QPushButton.clicked.connect(lambda:self.信号槽方法)。connect方法传参数时&#xff0c;需要加上“lambda:”2.步骤&#xff1a;添加一个按钮 self.button1 QPushButton(按钮上的文本)。创建水平布局对象QHBoxLayout&#xff0c;并使用setWidget方…

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;直接一次看完附近所有城市低价(附近城市均有经销商可售…

文本图像增强及opencv应用实例

1 文本图像增强简介 文本图像增强应用场景:扫描电子图像、图像去背景、去噪点、文字增强等;传统图像处理的方法:滤波锐化、形态学处理等,利用opencv就可以操作;基于深度学习的方法:风格迁移、超分重构等。2 基于opencv的文本图像增强算法之一 利用传统图像处理方式对文本…

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

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

文本图像增强文献调研

1 角度矫正 https://blog.csdn.net/weixin_39133209/article/details/127754001 https://zhuanlan.zhihu.com/p/370145715 https://blog.csdn.net/m_buddy/article/details/81463234 https://blog.csdn.net/weixin_42869334/article/details/123348328 https://www.codenong.c…

Jenkins Job 迁移小妙招【jenkins-cli】

文章目录 jenkins-cli 入门jenkins-cli 使用方法 1:使用 ssh 访问 jenkins第 1 步:认证第 2 步:查看支持的命令第 3 步:构建 job 案例方法 2:使用 cli 客户端 访问 jenkins第 1 步:下载 jar第 2 步:使用 cli 客户端查看所有选项客户端连接模式两种方式的对比迁移案例【基…