Я создаю программу, которая подсчитывает количество людей, найденных каждой из групп, найденных в другой таблице «пользователи» в моей базе данных mysql, которая собирает данные для: (id, ap, apgroup, mac, datetime, device) и использует apgroup. и количество строк (или людей), найденных для этой группы, и вернуть данные в мою новую таблицу "howmany", чтобы отобразить данные в моих 2 столбцах "apgroup" и "count" для здания и сколько людей было замечено в этом здании , Какие-либо предложения? Вот мой код:
#!/bin/python3
import socket
import os, os.path, grp
import pymysql as mdb
con = mdb.connect('localhost', 'wlessuser', 'tKCRhA7XLkVehew9',
'wireless_state');
cur = con.cursor()
def monthnum(shortname): #dictionary to convert month
name to month number
return {
'Jan' : "01",
'Feb' : "02",
'Mar' : "03",
'Apr' : "04",
'May' : "05",
'Jun' : "06",
'Jul' : "07",
'Aug' : "08",
'Sep' : "09",
'Oct' : "10",
'Nov' : "11",
'Dec' : "12"
} [shortname]
mysock = "/home/log/auth-logs-socket" #defines socket address as
mysock
if os.path.exists(mysock): #socket connection to Doug's
socket
os.remove(mysock)
sock = socket.socket(socket.AF_UNIX, socket.SOCK_DGRAM)
gid = grp.getgrnam("network").gr_gid
sock.bind(mysock)
os.chown(mysock, os.getuid(), gid)
sql = """INSERT howmany (apgroup, count) VALUES(%s, %d) ON DUPLICATE
KEY UPDATE
apgroup=%s, count=%d;""" #inserts data into the database
cur.execute("set autocommit = 1")
while True:
l = sock.recv(4096).decode()
dateparts = l.split(None, 4)
#splits the found date/time
prefix = dateparts[4].split('[', 1)
#splits the opening bracket off of found fsuid
fsuid = prefix[1].split(']', 1)
#splits the second bracket off of found fsuid
tokens = fsuid[1].split()
datetime = dateparts[3] + '-' + monthnum(dateparts[0]) + '-' +
dateparts[1].zfill(2) + ' ' + dateparts[2] number_of_rows =
"""SELECT * FROM users"""
cur.execute(number_of_rows)
print(cur.rowcount, "rows at", dateparts[2])
values = (tokens[9], number_of_rows, tokens[9], number_of_rows)
cur.execute(sql, values)