

第四章sqlite数据库和室内环境检测系统代码 素材 浙教版(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 jsonfrom 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.dbcur = 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) ) db.commit() #事务提交,保存修改内容。 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代码<!doctype html><body><meta http-equiv="refresh" content="60"></body><style>#center{ MARGIN-RIGHT: auto;MARGIN-LEFT: auto;background:#eff7ff;width:600px; height:500px;vertical-align:left;overflow-y:scroll; overflow-x:scroll}</style><title>室内环境监测系统</title><h1 align="center">室内环境监测系统</h1><h2 align="center">当前室内温度:{{temp}} </h2><h2 align="center"><a href="/">刷新</a>历史数据列表:</h2><div > 温度 记录时间<br> {% for i in data[::-1] %} {{i[2]}} {{i[3]}} <br> {% endfor %}</div><br><div align="center" >提交数据:<a href="/input?id=1&val=255">/input?id=1&val=255</a><br>获取数据:<a href="/get?id=1">/get?id=1</a></div>
