我已经搜索并尝试了很多方法,但是找不到解决方法。
我正在将一些SNMP OID存储在数据库中,并将它们显示在带有数据表的表中。
我希望以正确的顺序显示OID,例如:
1.3.6.1.2.1.1
1.3.6.1.2.1.10
1.3.6.1.2.1.2
正确的顺序是:
1.3.6.1.2.1.1
1.3.6.1.2.1.2
1.3.6.1.2.1.10
在存储OID字符串的列上使用order by的SQL查询将对它们进行排序:
1.3.6.1.2.1.1
1.3.6.1.2.1.10
1.3.6.1.2.1.2
我正在通过PHP或最好是python flask使用服务器端处理。目前,我是在flask中自己构建表,并编写了一个函数,该函数通过将OID转换为元组和排序来对其进行排序。这行得通,但我想使用数据表来获得分页和响应能力。
要注意的一件事是OID的长度没有限制。
任何想法都会受到赞赏。
答案 0 :(得分:0)
这是一种破解,但它可能有效。如果OID中的每个元素的最大值<100,则在数据库中创建第二列,每个元素都将转换为2位0填充值:
$('#abutton').click(function() {
$('#abutton').removeClass('off').addClass('on');
$('#bbutton').removeClass('on').addClass('off');
$('#cbutton').removeClass('on').addClass('off');
$('#dbutton').removeClass('on').addClass('off');
window.scrollTo(0,0);
});
$('#bbutton').click(function() {
$('#abutton').removeClass('on').addClass('off');
$('#bbutton').removeClass('off').addClass('on');
$('#cbutton').removeClass('on').addClass('off');
$('#dbutton').removeClass('on').addClass('off');
window.scrollTo(0,0);
});
$('#cbutton').click(function() {
$('#abutton').removeClass('on').addClass('off');
$('#bbutton').removeClass('on').addClass('off');
$('#cbutton').removeClass('off').addClass('on');
$('#dbutton').removeClass('on').addClass('off');
window.scrollTo(0,0);
});
$('#dbutton').click(function() {
$('#abutton').removeClass('on').addClass('off');
$('#bbutton').removeClass('on').addClass('off');
$('#cbutton').removeClass('on').addClass('off');
$('#dbutton').removeClass('off').addClass('on');
window.scrollTo(0,0);
});
测试通过后,您甚至可以消除时间间隔以节省空间。
答案 1 :(得分:0)
首先在句点上分割字符串,然后将其类型转换为int。然后使用sorted
和operator.itemgetter
按多个属性排序。然后使用句点重新加入。类似于以下内容:
original_oids = [...]
split_and_typecast_oids = [map(int, oid.split(".")) for oid in original_oids]
sorted_oids = sorted(split_and_typecast_oids, operator.itemgetter(1,2,3,4,5,6,7))
rejoined_oids = [".".join(map(str, oid)) for oid in sorted_oids]