使用python接收2g模块数据并保存至mysql

由于我们要将传感器数据通过2g模块实时上传到云端,并由网页进行展示,时间很紧,我就写了一个使用python来实时接收,并存储到数据库中的小程序。

再一次体会到了python的强大,不过还没进行完整测试,多个模块同时传输,可能会有bug。

 

import threading
import socket
import mysql.connector
#进程锁,防止在写数据库中,多个cursor操作
lock = threading.Lock()
#建立mysql连接
conn = mysql.connector.connect(user='', password='', database='')
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
#监听最大数量
s.listen(30)
print('Waiting for connection...')
#写数据库指针
cursor = conn.cursor()
def tcplink(sock, addr):
    print('Accept new connection from %s:%s...' % addr)
    while True:
        data = sock.recv(1024)
        try:
            data.decode('utf-8')
        except:
            break
        finally:
            data=data.decode('utf-8')
        #检测是否以我规定的字符开头
        if not data.startswith('××××'):
            break
        #防止写库时多个cursor,加锁
        lock.acquire()
        #写库
        cursor.execute()
        #提交
        conn.commit()
        #解锁
        lock.release()
    sock.close()
    print('Connection from %s:%s closed.' % addr)
while True:
    #检测是否有mysql连接,没有自动重连接
    if(conn is None):
        conn = mysql.connector.connect(user='', password='', database='')
        cursor = conn.cursor()
    else:
        conn.ping(True)
    sock, addr = s.accept()
    t = threading.Thread(target=tcplink, args=(sock, addr))
    t.start()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值