列为Name
,Score
,Date
。
我希望按date
对一个名称进行排序,并使用python和sql删除最旧的记录。
我试过了:
cursor.execute("SELECT * FROM "+group+" ORDER BY date ASC LIMIT 0, 50000;")
cursor.execute("DELETE FROM "+group+" WHERE '_rowid_' = '1';")
group是表名的变量。当它运行时,它运行没有错误,但没有删除任何内容。
答案 0 :(得分:1)
MySQL DELETE statement支持ORDER BY
和LIMIT
,因此您可以使用简单语句删除最早的日期行:
cursor.execute("DELETE FROM "+group+" ORDER BY `Date` LIMIT 1;")
答案 1 :(得分:0)
_row_id_
周围的引号使其成为字符串。换句话说,查询将尝试删除字符串_rowid_
等于字符串1
的记录,该字符串永远不会为真,并且不会删除任何内容。
省略引号以将其识别为列名:
myid = 1
cursor.execute("DELETE FROM "+group+" WHERE _rowid_ = ?;", (myid, ))
另外,一般来说,不应该使用字符串插值或字符串格式来进行SQL查询。但在这种情况下,您正在参数化一个表名,它不能通过数据库驱动程序通过查询参数插入到查询中。