php - MySQL 和 Python 的结构化问题

标签 php python mysql data-structures

好吧,所以我的问题是一个规划问题,而不是一个实际的“错误”类型问题,我向你们寻求关于如何最好地构建我的项目的想法!

这就是我正在处理的内容。

我有一个正在运行的 MQTT 服务器(我相信是 v3.1.1),设备可以连接到该服务器。服务器还运行一个 Python (v2.7) 脚本,该脚本将发出连接设备必须响应/运行的命令。

有一些常量和很多变量。它们如下:

  1. 设备具有唯一的序列号(在连接到 MQTT 服务器时传递)。

  2. 设备IP(甚至是MQTT服务器的IP)是动态的。你问他们如何联系?它始终是 xx.xx.xx.250。所以我让他们搜索自己的子网并连接到 .250。

  3. 设备将获得(某种注册过程)一个可以识别的 ID(称为:REGID)(因为序列号太难记住),遗憾的是这并不是一成不变的,这些可以是整数 (001) 或数字变体 (A01) 或只是文本 (snoopy)。

结果,我的 MySQLdb 看起来像这样:

+----+-------+--------+----+--------+
+ ID + REGID + STATUS + IP + SERIAL +
+----+-------+--------+----+--------+

这是一个困境:

我正在尝试在 MySQLdb 上存储并保留准确的信息,以便在这些设备的页面上显示。

当设备登录时,它会检查 MQTT 并记录其“IP”和“串行”。它的“序列号”和“状态”被写入数据库(UPDATE WHERE IP=)

另一方面,当注意到序列与数据库中已有的序列匹配时,我会假设它在“regid”下注册,并且仅更新“状态”。

问题:当 IP 发生变化(无论出于何种原因)时,我最终会得到重复的内容,这是我根本无法拥有的,有没有办法防止这种情况发生? p>

我想到了:

制作两张表:一张带有“serial”和“regid”(表:注册),一张带有“ip”、“status”和“serial”(表:设备),尽管这也不能保护我防止重复...

任何帮助和/或建议将非常感激,因为我想不出解决方案!

谢谢。

最佳答案

问题在于:当 IP 发生变化(无论出于何种原因)时,我最终会得到重复的内容,这是我根本无法拥有的,有没有办法防止这种情况发生? p>

您只需要一个唯一的 key ,即序列号。当您发现序列号已在数据库表中时,请更新状态 IP。这样你就永远拥有当前的IP。如果您需要旧 IP 的记录,请创建另一个表,即历史表。该历史表可以有相同序列号的多个条目。

关于php - MySQL 和 Python 的结构化问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41580242/

相关文章:

php - 如何修改与auth相关的flash消息的外观?

python - Django 两个来自同一模型的外键

MySqlDataReader 不返回数据

php - 如何指向一个URL :PORT to specific directory in apache

php - 显示错误时间的网站总登录时间

php - 数组插入另一个数组

python - 在python中格式化字符串

python - 将单个/多个字符更改为另一个单个字符

mysql - 更正 xampp 中的错误

php - Jquery UI 可排序,将顺序写入 MySql 数据库