第四章sqlite数据库和室内环境检测系统代码 素材 2021—2022学年浙教版(2019) 信息技术必修二信息系统与社会

资源下载
  1. 二一教育资源

第四章sqlite数据库和室内环境检测系统代码 素材 2021—2022学年浙教版(2019) 信息技术必修二信息系统与社会

资源简介

#SQLite数据库基本操作
import sqlite3
#连接/创建数据库
conn = sqlite3.connect("Sqlite/text.db")
#创建游标
cu = conn.cursor()
#创建数据表(表名st)
#create table <表名>(<字段名> <字段数据类型>,……)
cu.execute('''
create table st
(
ID int primary key not NULL,
name text not NULL,
age int not NULL,
sex char(1) not NULL
)
''')
conn.commit() #保存并提交到数据库
#向数据库增加数据
#insert into <表名> (字段1,字段2,……) valuse(值1,值2,……)
cu.execute("insert into st(ID,name,age,sex) values(1,'Peter',15,'M')")
cu.execute("insert into st(ID,name,age,sex) values(2,'Jim',16,'M')")
cu.execute("insert into st(ID,name,age,sex) values(3,'Maray',14,'W')")
cu.execute("insert into st(ID,name,age,sex) values(4,'Brent',17,'M')")
conn.commit() #提交数据
#查找
#select <输出列1>,<输出列2> form <表名> where <筛选条件>
s = cu.execute("select * from st")
for i in s:
print(i)
s = cu.execute("select name,age from st")
for i in s:
print(i)
s = cu.execute("select name,age from st where age>15")
for i in s:
print(i)
#用fetchall() 获取游标结果,返回的是列表类型
cu.execute("select name,age from st where age>=15")
print(cu.fetchall())
#删除语句
#delete from <表名> where <筛选条件>
cu.execute("delete from st where ID=1 ")
conn.commit() #更新
cu.close()
conn.close()
#室内环境检测系统flask代码
import sqlite3 #导入 sqlite3 数据库
import json
from flask import Flask,render_template, request
DATABASE = "./flask_class4/data/data.db" #定义数据库路径
app = Flask(__name__) #创建一个服务器实例
@app.route("/")
def hello():
db = sqlite3.connect(DATABASE) #连接数据库 data.db
cur = db.cursor() #创建游标对象
cur.execute("SELECT * FROM sensorlog WHERE sensorid =1")
#Execute方法用来执行sql语句,当sensorid=1, 从"sensorlog" 表中选取所在列
data = cur.fetchall() #查询所有数据
cur.close() #关闭游标,不自动提交保存。
db.close() #关闭数据库,不自动提交保存。
temp1 = data[len(data) - 1] #获取最新一行的数据,[ID,TIME,TEMP]
temp = temp1[2] #获取温度
return render_template('vews1.html', data=data,temp=temp)
#Get data
@app.route("/get",methods=['GET']) #响应网页的 get 请求,返回实时温度
def get_data():
sensorid=int(request.args.get('id')) #获取id值
db = sqlite3.connect(DATABASE) #连接数据库 data.db
cur = db.cursor() #创建游标对象
cur.execute("SELECT * FROM sensorlog WHERE sensorid = %s"% sensorid)
#Execute方法用来执行sql语句,当sensorid=1, 从"sensorlog" 表中选取所在列
data = cur.fetchall() #查询所有数据
dbsum=len(data) #所有数据的长度
dset={'sensorid':sensorid} #字典
temp=[] #空数组
for i in range(dbsum): #在该数据长度下轮询
value={} #空的字典
value['sensorvalue']=data[i][2] #当前i值的温度
value['updatetime']=data[i][3] #当前i值的时间
temp.append(value) #在temp对象末尾创建value值
#dset['value']={'sensorvalue':data[i-1][2],'updatetime':data[i-1][3]}
dset['value']=temp #在该字典后面放入温度和时间
djson=json.dumps(dset)#把编码字典数据
return djson #返回所有数据
#Adding data
@app.route("/input",methods=['POST','GET']) #响应终端的 post和get 请求,获取实时温度
def add_data():
if request.method == 'POST':
sensorid = int(request.form.get('id'))
sensorvalue = float(request.form.get('val'))
else:
sensorid = int(request.args.get('id'))
sensorvalue = float(request.args.get('val'))
nowtime = datetime.datetime.now()
nowtime = nowtime.strftime('%Y-%m-%d %H:%M:%S')
db = sqlite3.connect(DATABASE)
cur = db.cursor()
cur.execute("INSERT INTO sensorlog(sensorid,sensorvalue,updatetime) VALUES(%d,%f,'%s')" %(sensorid,sensorvalue,nowtime) )
mit() #事务提交,保存修改内容。
cur.execute("SELECT * FROM sensorlist where sensorid = %d"% sensorid)
rv = cur.fetchall()
cur.close()
db.close() #关闭数据库,不自动提交保存。
maxrv = rv[0][2]
minrv = rv[0][3]
if sensorvalue > maxrv or sensorvalue < minrv:
return '1'
else:
return '0'
if __name__ == "__main__":
app.run(host="0.0.0.0", port=8080,threaded=True) #绑定 Web 服务器的 IP 和端口
#室内环境检测系统html代码



室内环境监测系统

室内环境监测系统


当前室内温度:`temp`


刷新历史数据列表:



温度 记录时间

{% for i in data[::-1] %}
{{i[2]}} {{i[3]}}

{% endfor %}



提交数据:/input id=1&val=255
获取数据:/get id=1

展开更多......

收起↑

资源预览