Python 在SQLite数据库中存储日期/状态的高效数据结构?
我正在使用Django 1.10、Python2.7、和SQLite3构建一个web应用程序,跟踪对象的状态以及上次更改的时间 例如,每24小时,用户将为主机导入一个开放端口列表(如下面的列表):Python 在SQLite数据库中存储日期/状态的高效数据结构?,python,django,database,sqlite,data-structures,Python,Django,Database,Sqlite,Data Structures,我正在使用Django 1.10、Python2.7、和SQLite3构建一个web应用程序,跟踪对象的状态以及上次更改的时间 例如,每24小时,用户将为主机导入一个开放端口列表(如下面的列表): 05/01/2017 ========== Host Open-Ports 123.45.67.89 22, 80, 443 ... ... 一个端口(或多个端口)可能在一天内关闭: 05/02/2017 =========
05/01/2017
==========
Host Open-Ports
123.45.67.89 22, 80, 443
... ...
一个端口(或多个端口)可能在一天内关闭:
05/02/2017
==========
Host Open-Ports
123.45.67.89 443
... ...
我希望我的Django应用程序显示以下数据:
IPv4
123.45.67.89
Ports
22 [Closed on 05/02/2017]
80 [Closed on 05/02/2017]
443 [Open]
跟踪港口状态的最有效方法是什么?
目前,我有一个具有以下字段的主机模型:
- IPv4地址(GenericPaddressField)
- 主机名(CharField)
- 地点(查菲尔德)
05/03/2017
==========
Host Open-Ports
123.45.67.89 22, 443
... ...
然后我们会看到:
IPv4
123.45.67.89
Ports
22 [Open]
80 [Closed on 05/02/2017]
443 [Open]
其中端口80仍然表示它已于2017年2月5日关闭。对于多次打开和关闭的端口,您希望输出什么?如果您只想要最近打开的和最近关闭的,则会使所需的数据更高效。如果您不想跟踪主机状态(只想要最新状态,旧数据不重要),请不要保留它们!只需更新表中的主机状态,不为现有主机、端口添加新行。您的表应具有
状态
字段(关闭、打开),因此当用户不更新端口状态时,您保持旧状态,如果用户关闭端口,则不删除该行,只需更改状态
当用户打开一个端口时,如果它存在,只需更新状态。您还需要添加port\u closed\u datetime
字段,(当用户关闭一个端口时,更新此字段,当端口关闭时,返回此字段的值(好的,为该字段使用更好的名称:-)@aliva我感谢您的帮助!但有一个问题;我的表用于主机,而不是端口,那么添加状态字段的最佳方式是什么?我应该在Hosts中创建一个port\u status
字段,创建一个信息字典{22:'open',80:'closed',443:'open'}
,并将其存储为BLOB吗?