Python温湿度传感器应用(二)基于pymysql温湿度表查询(C/S端)
承接上一次 温湿度传感器 获取传值、存入数据库 ,这偏文章主要增加了 客户端查询显示的功能 !
上一次博客链接:https://blog.csdn.net/cungudafa/article/details/85690998
导语:
我拿着之前的设计方案悠哉悠哉去做Python课程设计的答辩,然后被老师教育了一番→_→
- 数据转换小毛病: 获取传值和存入数据库没啥太大毛病(这里注意int进制格式转换时要求参数非负数;如果用
struct
,则不会影响) - 设计过于简单: Python原意就是简化编程语言,获取传值和保存数据库就是两句代码可以解决的问题!如何把这两句代码完善丰富和做出花样就是本事了!老师给了两句话:
如果只有2句代码怎么报项目资金,一大段代码才好报账!
我好像明白了什么? - 关于界面问题: 老师提到应做出
查询界面
,按关键词搜索供用户使用!我争辩:获取实时传值传回数据库是我们的工作,不需要界面。老师说:客户角度
考虑,客户不会使用控制台和MySQL! - C/S客户端查询: 先梳理一下本次实验所用到的设备: 1 温湿度传感器、2 我的PC端附带本地Mysql进行全部数据存储(假设这是一个巨大的私密数据库:充当Server服务器,可以对全部数据进行操作)、3 任意电脑的客户端(用户:将访问我的PC,输入关键词,获取查询结果并显示,这里:用户不能直接对数据进行操作!相当于一层加密~)这里是相当难理解了?,后文详解
目录
- 一、总流程框图及各部分作用表
- 二、总项目结构
- 三、具体代码实现
- 1. 基于Mysql数据库的创建
- 2. 获取传值并存入数据库
- 3. 查询
一、总流程框图及各部分作用表
设备 | 作用 | |
---|---|---|
1 | 温湿度传感器 | 采集信息并返回到总服务器归档 |
2 | Server总服务器 | 获取传值、存入数据库(拥有读写最高权限) |
3 | Client客户端 | 关键词查询 |
4 | 可视化服务器 | 连接Client和Server的桥梁(对数据库直接访问权限的加密保护) |
二、总项目结构
Tips:这里不在 _init _下写入代码是因为,调用整个包时, _init _中的内容会自动运行。
三、具体代码实现
1. 基于Mysql数据库的创建
2. 获取传值并存入数据库
mysql.py
#!/usr/bin/env python3
# -*- coding:utf-8 -*-import socket
import codecs
import time
import datetime
import pymysql#=========连接数据库=============
con = pymysql.connect(host='127.0.0.1',port=3306,user='root',password='wy123456',db='python_windu',charset='utf8'
)
cur = con.cursor() # 定义一个游标,通过游标来操作数据库
print("1、正在连接:")
#==================获取传值=======================
sk = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
print(sk)
print("2、正在获取传值:")
address = ('10.1.156.82', 8001)
sk.connect(address)
while True:inp = "030300000002c5e9" # 请求码time.sleep(3)sk.send(codecs.decode(inp, 'hex'))data = sk.recv(1024)print("3、接受到的数据:")print(data)#==十六进制转intsd = codecs.encode(data[3:5], 'hex') # 16进制读取data第3到第5个数的值sd = int(sd, base=16) / 100 # 16进制转10进制保留两位小数,int类型wd = codecs.encode(data[5:7], 'hex')wd = int(wd, base=16) / 100print("4、处理后的数据:")print("湿度:%s,温度:%s" % (sd, wd))now_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") # strftime格式化时间函数print("5、成功保存到数据库中!")#==插入到数据库中cur.executemany("INSERT pytest VALUE(%s,%s,%s)", [(now_time, str(wd), str(sd))]) # int转strcon.commit()print("6、显示数据库内容:")print("----------------------------------------")#===读取数据库打印表格sql = """ SELECT * FROM pytest """results = cur.fetchall()file = r"wendu.txt"fp = open(file, "w")fp.write(" 温湿度传感器表1\n")fp.write("-----------------------------------\n")fp.write("时间" + "\t\t\t\t" + "温度" + "\t" + "湿度" + "\n")sum = 0 # 统计已录入数据次数try:# 执行SQL语句cur.execute(sql)# 获取所有记录列表results = cur.fetchall()print(" 温湿度传感器表 ")print("-----------------------------\n")print("时间 温度 湿度\n")for it in results:fp.write(it[0] + "\t\t")fp.write(it[1] + "\t")fp.write(it[2] + "\n")for i in range(len(it)):print(it[i], end=' ')sum += 1print("\n")print("-----------------------------\n")print(" 统计:(" + str(sum) + ")条记录\n")fp.write("------------------------------------\n")fp.write("总计:%d条记录\n" % sum)fp.close()except:print("未查询到数据")
sk.close()
在同目录下创建一个txt:用于备份全部数据库的内容,防删库跑路!
存入结果:
3. 查询
流程图:
项目结构:
Client端
Client.py
#!/usr/bin/env python3
# -*- coding:utf-8 -*-
# 用户端
import socket
#ip_addr = input('请输入对方IP地址:').strip()
client = socket.socket()
client.connect(("192.168.43.241", 9999))def menu():print("\n 用户界面 ")print("----------------------")print(" 1、查询全部数据 ")print(" 2、关键词查询 ")print(" 3、退出 ")print("----------------------")while True:menu()print("请输入(1~3)")msg = input('>>:').strip()if len(msg) == 0:continueclient.send(msg.encode('utf-8'))data_sure = client.recv(1024)print(data_sure.decode())
client.close()
Server端
Server.py
#!/usr/bin/env python3
# -*- coding:utf-8 -*-# 服务器端
import socket
import codecs
import time
import datetime
import pymysqldata = 0con = pymysql.connect(host='127.0.0.1',port=3306,user='root',password='wy123456',db='python_windu',charset='utf8'
)
cur = con.cursor() # 定义一个游标,通过游标来操作数据库sum = 0
sql_msg = []def fun1(): # 遍历数据库#sql_msg.append(" 温湿度总数据表 ")# sql_msg.append("-----------------------------\n")#sql_msg.append("时间 温度 湿度")try:# 执行SQL语句sql = """ SELECT * FROM pytest """cur.execute(sql)results = cur.fetchall()sql_msg.append(results)'''for it in results:for i in range(len(it)):sql_msg.append(it[i], end=' ')sql_msg.append("\n")sum += 1sql_msg.append(" 统计:(" + str(sum) + ")条记录\n")'''cur.close()con.close()except:sql_msg.append("未查询到数据")passdef fun2(): # 输入关键词查询sql_msg.append("请输入关键词(温度):")print("客户端操作:2查询")#key = input(">>>")key = datasql_wendu = "SELECT * FROM pytest where wendu like '%" + str(key) + "%' "#sql_shidu = "SELECT * FROM pytest where shidu like '%" + str(key) + "%' "#sql_time = "SELECT * FROM pytest where time like '%" + str(key) + "%' "try:cur.execute(sql_wendu)results1 = cur.fetchall()sql_msg.append(results1)'''sql_msg.append("查询结果:")sql_msg.append("-----------------------------\n")sql_msg.append("时间 温度 湿度\n")for it in results1:for i in range(len(it)):sql_msg.append(it[i], end=' ')sql_msg.append("\n")'''cur.close()con.close()except:sql_msg.append("关键词有误,请重新输入!")def fun3(): # 退出程序print("客户退出程序!")exit(0)# 自己定义的用来实现switch-case的方法
def function(x):swicher = { # 定义一个map,相当于定义case:func()'1': fun1,'2': fun2,'3': fun3,'4': lambda: print('default function')}func = swicher.get(x, '4') # 从map中取出方法return func() # 执行def menu():print("\n 用户界面 ")print("----------------------")print(" 1、查询全部数据 ")print(" 2、关键词查询 ")print(" 3、退出 ")print("----------------------")while True:# menu()#cmd = input('请输入(1~3) : ')# function(cmd)server = socket.socket()server.bind(('192.168.43.241', 9999))server.listen(5)print('等待客户连接...')conn, addr = server.accept()try:data = conn.recv(10240) # 接收数据print('IP为:' + addr[0] + '向您发来消息:', data.decode())function(data.decode())conn.send(str(sql_msg).encode('utf-8'))except ConnectionResetError as e:print('客户端:%s 已经断开!' % addr[0])breakconn.close()server.close()
运行结果:
测试本地查询:
通过TCP通信传值查询: 采用TCP远程访问本机IP进行通信,接收用户查询的关键词;再由本机从数据库读取,sql_msg.append返回给用户
本次不足:
未加界面(图一:实时查询显示、图二:相似完整系统界面及配置)
Python温湿度传感器应用(二)基于pymysql温湿度表查询(C/S端)相关推荐
- Python温湿度传感器应用(一)_获取传值、传入本地数据库
目录 一.准备 二.获取温湿度传感器的值 三.传入本地数据库中 四.打印成txt形式保存 一.准备 温湿度传感器的搭建(是我们老师搭建的平台,我们连接校网就可以读取了) 提示: 不用连接哆点,只要能连 ...
- python温湿度传感器源代码_在树莓派上读取DHT11温湿度传感器-python代码实现及常见问题(全面简单易懂)...
最近由于自己的课题需要,想要用在树莓派上使用DHT11温湿度传感器来读取空气中温湿度,遇到了几个问题,解决之后也对之前的知识进行了回顾,总结,特整理如下,希望能给也在学习树莓派的小伙伴们带来一些帮助. ...
- python温湿度传感器源代码_在树莓派上读取DHT11温湿度传感器python代码实现及常见问题(全面简单易懂)...
最近由于自己的课题需要,想要用在树莓派上使用DHT11温湿度传感器来读取空气中温湿度,遇到了几个问题,解决之后也对之前的知识进行了回顾,总结,特整理如下,希望能给也在学习树莓派的小伙伴们带来一些帮助. ...
- Python爬虫实战之二 - 基于Scrapy框架抓取Boss直聘的招聘信息
Python爬虫实战之三 - 基于Scrapy框架抓取Boss直聘的招聘信息 ---------------readme--------------- 简介:本人产品汪一枚,Python自学数月,对于 ...
- dht22温湿度传感器特点及使用介绍
dht22温湿度传感器特点及使用介绍 前言 一.dht22温湿度传感器外观 二.连接图 三.相关参数讲解 1.引脚 2.温湿度测量范围 3.通讯方式(单总线数字信号) 4.优点 5.产品特性(根据官方 ...
- dht11温湿度传感器特点及使用介绍
dht11温湿度传感器特点及使用介绍 前言 一.dht11温湿度传感器外观 二.原理图 三.相关参数讲解 1.引脚 2.温湿度测量范围 3.通讯方式(单总线数字信号) 4.优点 5.产品特性(根据官方 ...
- STM32F103使用硬件IIC驱动SHT30温湿度传感器
文章目录 前言 一.SHT30温湿度传感器原理图 二.代码部分 1.SHT30.c文件 2.SHT30.h文件 总结 前言 SHT30是一种常见的温湿度传感器,该传感器广泛应用于各种场景,小米的温湿度 ...
- 【逗老师带你学IT】PRTG监控通过Python+Modbus RTU获取温湿度传感器数据
前文[逗老师带你学IT]PRTG监控通过Python+TCP Modbus获取温湿度传感器数据中我们讲了如何通过Python读取支持TCP Modbus的传感器数据.本章我们讲解下如何读取Modbus ...
- 【逗老师带你学IT】PRTG监控通过Python+TCP Modbus获取温湿度传感器数据
本文介绍,Python如何通过TCP Modbus协议获取温湿度传感器数据.并在PRTG监控系统中呈现. 本文主要涉及知识点: 1.Python的ModbusTCP客户端实现 2.常见温湿度传感器中, ...
最新文章
- 关于“习惯”的精彩分析
- 自考计算机毕业论文答辩视频,过来人谈自考毕业论文答辩有感
- java调用通用对话框,利用Java Swing设计通用对话框
- android camera 竖直拍照 获取竖直方向照片 做缩放处理
- oa系统服务器到国外,oa系统放到云服务器云服务器
- 从零学iFIX视频教程 2.01版 完整目录 (总共220节视频)
- 计算机硬盘驱动器检查失败,如何修复Windows 10上未显示外部硬盘驱动器/未检测到问题...
- TR转TO L_TO_CREATE_TR
- 如何在win7下安装XP系统?
- 4、web(js):js 操作table: insertRow(),deleteRow(),insertCell(),deleteCell()方法
- ​机器如何“猜你喜欢”?深度学习模型在1688的应用实践
- 双足机器人课设报告_双足竞步机器人-智能步行者设计-技术报告
- 计算机电脑照片大小,电脑上怎么调整照片kb
- CameraCaptureSession
- RPM软件安装包-rpm指令操作
- Python绘制简单的曲线图·
- 导入EXCEL表时,提示找不到可安装的ISAM怎么办
- 怎样避免无意识偏见_精神病学意识到大数据和人工智能的价值和偏见
- 做视频剪辑工作赚钱吗?
- ffmpeg视频播放过程
热门文章
- UE4无尽跑酷游戏制作杂记之二
- 项目 : 预测波士顿房价_团结波士顿更新:早鸟票销售将于明天结束。 部分时间表到了!
- 记一篇IT培训日记012-连坐
- Pgsql批量更新数据
- 迅雷是国内最大的云加速服务提供商
- 蓝桥杯Web组备赛笔记4
- svn 被锁住 冲突 Can‘t revert without reverting children
- 柔性制造方式的建立(zt)
- MD61计划独立需求导入BAPI【按日维度/动态模板/动态字段】
- cad线性标注命令_CAD线性标注快捷键DLI,CAD标注快捷键大全