我正在做一些蓝牙项目,我有一个设备嗅探MAC地址。我希望将那些嗅探的地址保存到某个表格中(在我的案例中称为“访客”)。
现在,问题是。表I_year_student和II_year_student将有一个手动插入的记录。我希望将所有找到的设备保存到表“访客”中。问题是:有时一个已经在表I_year_student中的MAC地址将再次被设备嗅探,当然,它将再次保存到数据库,更准确地说,保存到“访问者”表中。现在我在两个不同的表中有两个相同的记录,我不希望这发生。
有没有办法,在我的设备找到某个MAC地址后,检查该记录是否已存在于其他表中。像这样:
用于嗅探和输入表格的部分代码访问者如下:
if len(nearby_devices) > 0:
print(len(nearby_devices))
for addr, name in nearby_devices:
try:
cur.execute("""INSERT INTO Visitors
(Address, Name)
VALUES
(%s,%s)
""", (addr, name)
)
con.commit()
答案 0 :(得分:0)
好的,谢谢大家的帮助,但我想我找到并回答并设法解决问题:
我的情况是这样的。我有一个设备总是在蓝牙协议上嗅探MAC地址,我想将我找到的所有地址保存到MySQL数据库以供以后处理。此外,我想通过基于不同的配置文件将它们分开来保存这些地址,例如:
问题是我的数据库已经有一些手动添加的mac地址,我不想要我的新地址(也可能是旧的,因为有些设备可以再次进入嗅探区域)再次保存在一些ProfileID下,虽然我已经将它们放在其他一些ProfileID下。
所以,经过一番思考后我编写了查询并测试了它,现在它运行正常。
cur.execute("""INSERT INTO ordenador
(Address, Name, ProfileID)
VALUES
(%s,%s,'public')
ON DUPLICATE KEY UPDATE
ProfileID = VALUES(ProfileID)
""", (addr, name)
)
现在,当我的设备捕获一个“新的”mac地址时,他将该记录输入到“ordenador”表中,如果“new”mac地址的记录已存在,那么它只是将记录更新为旧记录。在其他情况下,如果该记录不存在,则查询在ProfileID下输入记录,在我的情况下为“public”。
欢迎所有的建议和想法。我希望这对那些已经遇到类似问题的人有所帮助。