我有一个包含字段,用户名,密码,分数,杀戮和时间的数据库。我试图按升序按顺序排列所有记录,因此最高得分位于顶部。
我这样做的功能运行良好,不会产生错误,但不会以任何方式改变顺序。
我做错了吗?所有帮助表示赞赏。
功能:
# Orders database by high score
def order_db():
"""
Orders the database rows,
so first row has highest
score.
"""
open_db()
command = ("""
SELECT * FROM players
ORDER BY score ASC
""")
cur.execute(command)
close_db()
完整代码: http://pastebin.com/Bw14dTaa
我尝试使用以下方式更改功能:
cur.executemany(command)
或者更改SQLite语句的格式:
("""
SELECT * FROM players
ORDER BY score ASC;
""")
编辑:
所以我的display_db()函数搞乱了,并没有显示它们的顺序。我通过在执行select语句后移动其中的order_db()函数来修复此问题。把它移到上面似乎又打破了它,我为什么感到困惑?
答案 0 :(得分:1)
你的语法很好。但是,根据您要执行的操作,您需要按递减顺序排序,而不是按升序排序:
command = ("""SELECT * FROM players
ORDER BY score DESC
""")
Sql认为开始是最重要的,这就是为什么你需要DESC,如果你想要最高的那个在顶部。
我认为使用ASC时排序没有变化,因为数据已经按升序排序。