我正在制作一个Web应用程序,其中包括从多个rpis检索数据。这些作为Wi-Fi AP工作,通过curl POST data.json(连接的每个设备的mac地址和信号强度)发送。
bottle.py通过根据设备是新设备还是已更改其信号强度进行插入或替换,将该信息存储在sqlite3数据库中。基本上,bottle.py用作服务器,所有rpi都是客户端(rp1,rpi2,...),它们每10秒通过curl发送信息。该数据库具有存储每个rpi的设备的不同表(table1,table2 ...)。
如果设备断开与rpi1的连接并连接到rpi2,则rpi1不会发送该设备的信息,但发送者是rpi2,与此同时,该设备不在表1中,它将在表2中。因此,我如何拥有一个实时数据库来尽可能多地打印该信息?常量插入和删除?
bottle.py
@route('/', method='POST')
def index():
body = request.body.read().decode('utf8') # read directly HTTP input
get_dict = json.loads(body) # decode json and get native python dict
maclist = get_dict.get('maclist')
signallist = get_dict.get('signallist')
data_list = list(zip(maclist, signallist))
conn = sqlite3.connect('db/users.db')
c = conn.cursor()
try:
c.executemany("INSERT INTO users (MAC,SIGNAL) VALUES(?,?)", data_list)
except Exception as exc:
c.executemany("REPLACE INTO users (MAC,SIGNAL) VALUES(?,?)", data_list)
conn.commit()
return "Items added."
@route('/data', method='GET')
def index():
conn = sqlite3.connect('db/users.db')
c = conn.cursor()
c.execute('SELECT * FROM users')
return template('simple.tpl', rows = c.fetchall())
data.json
{
"maclist": [
"b6:a2:23:39:b5:27",
"b1:a2:0b:37:4c:22"
],
"signallist": [
"-50",
"-10"
]
}
users.db
MAC SIGNAL
b6:a2:23:39:b5:27 -50
b1:a2:0b:37:4c:22 -10