0
conn = sqlite3.connect('Path_To_DB.db')
c = conn.cursor() 
    c.execute('SELECT Nick,NumCount,TimesRun FROM databaseTable ORDER BY NumCount desc')
    ordered = c.fetchall()
    print ordered

当然,这只是一个片段,但打印的“有序”并没有显示出来……好吧,有序。

更准确地说,这是我的输出

    [(u'Coburn', u'52', 1), (u'radii', u'295', 1), (u'Senna_Wong', u'242', 1), (u'sinkingwork', u'17', 1), (u'Yumirose', u'164', 1), (u'yepperoni', u'154', 1), (u'Jeffrey-sama', 861, 2), (u'Kethsar', 414, 5), (u'sakeisgood', 331, 2), (u'lygerzero0zero', 269, 2), (u'asdfjjjjjj', 268, 5), (u'lunr', 253, 3), (u'asdfasf', 237, 2), (u'asdfsadjf', 130, 2), (u'Neibs', 107, 2)]

这是一个 XChat IRC 插件脚本,所以我需要提取数据库值以显示“最高分”列表。我一直在考虑手动对其进行排序,但这需要付出很多额外的努力,而且由于我是 python 脚本的新手,所以也需要大量的时间和研究。(我正在考虑单独获取 SELECT 查询,将它们组合成一个大列表 [a,b,c] 并通过它进行排序。)

所以无论如何,问题是:我到底做错了什么,所以计数没有被正确排序?

4

2 回答 2

3

其中一半是字符串,它们的排序方式不同。清理您的数据,将字符串转换为数字。

于 2012-05-24T04:47:05.113 回答
1

问题是你有不同类型的数据。看看他的 NumCount 字段,看到一些引号而不是其他的引号?我想如果你把所有的字符串都改成数字,你就解决了这个问题。

于 2012-05-24T04:49:10.320 回答