温湿度项目--服务器端

服务器端通过UDP获取单片机esp32传过来的数据 保存在mysql数据库里

然后通过flask提供web接口数据

import datetime
import socket
import threading
import pymysql
from flask import Flask, jsonify, request

# 接收客户端的数据
def recv_data():
    while True:
        try:
            data, addr = server.recvfrom(128)
            if data:  # 判断data不为空
                t_str = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
                tmp1 = data.decode()
                tmp2 = tmp1.split(':')  # ['FromEsp32', '22.50', '83.00']
                if tmp2[0] == "FromEsp32":
                    t = tmp2[1]
                    h = tmp2[2]
                    sql = "INSERT INTO shuju(t, h, sj) VALUES (%s, %s,  %s)"
                    values = (t, h, t_str)
                    try:
                        # 执行sql语句
                        cursor.execute(sql, values)
                        # 执行sql语句
                        db.commit()
                        # print("Insert Db Success!")
                    except Exception as e:
                        print(e)
                        # 发生错误时回滚
                        db.rollback()
                        print("Insert Db Error!")
                else:
                    print("Error Message!")
        except Exception as e:
            print("Recvive Error!")

# 打开数据库连接
db = pymysql.connect(host='localhost',
                     user='root',
                     password='EWlIuacYSXSW2Rj2',
                     database='wsd')
# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()
server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
host = ('10.0.4.11', 8081)
server.bind(host)
t0 = threading.Thread(target=recv_data)
t0.start()
# 创建应用实例
app = Flask(__name__)
# 视图函数(路由)#  http://121.4.99.98:5000/?num=10
@app.route('/')
def index():
    num = request.args['num']
    sql = "select * from shuju order by id desc limit 0, %s" % num
    cursor.execute(sql)
    result = cursor.fetchall()
    return jsonify(result)

# 启动实施(只在当前模块运行)
if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)


# 关闭不使用的游标对象
# cursor.close()
# 关闭数据库连接
# db.close()

猜你喜欢

转载自blog.csdn.net/weixin_42854045/article/details/127940924