pysql/pysql.py
2019-06-04 14:47:19 +02:00

67 lines
2.0 KiB
Python

import SocketServer as socketserver
import json
import time
import mysql.connector
class MyTCPHandler(socketserver.BaseRequestHandler):
"""
Handler base on Online documentation of socketserver
"""
def handle(self):
# self.request is the TCP socket connected to the client
self.data = self.request.recv(1024).strip()
print("{} wrote:".format(self.client_address[0]))
indata=self.data
bjson=True
try:
test=json.loads(indata)
except:
bjson=False
else:
if "payload" in test:
datatime=int(1000*time.time())
if "time" in test:
datatime=int(test['time'])
datasource=self.client_address[0]
if "device" in test:
datasource=test['device'].translate(None,' ./:;*|')
multi=1
if "mult" in test:
multi=int(test['mult'])
mycursor=mydb.cursor()
payload=test['payload']
for x,y in payload.items():
# remove unwanted characters from variable name
varx=x.translate(None,' ./:;*!')
varx=varx[:64]
try:
mycursor.execute(sqlinsert.format(datatime,datasource,varx,int(mult*y)))
except:
print("Error sql statement")
try:
mydb.commit()
except:
print("Could not commit")
# just send back the same data, but upper-cased
self.request.sendall("Done")
if __name__ == "__main__":
HOST, PORT = "", 24048
pwf = open("my.cnf","r")
pwj = json.loads(pwf.read())
print(pwj)
try:
mydb=mysql.connector.connect(host="localhost",user=pwj['user'],passwd=pwj['password'],database=pwj['database'])
except:
print("Could not connect to sql server! Quitting")
else:
sqlinsert="insert into datain (time,device,var,value) values ({0:d},'{1:s}','{2:s}',{3:d})"
# Create the server, binding to localhost on port 9999
server = socketserver.TCPServer((HOST, PORT), MyTCPHandler)
# Activate the server; this will keep running until you
# interrupt the program with Ctrl-C
server.serve_forever()