python - SQLObject:如何从表中删除前N个对象?

标签 python sql orm sqlobject

我有一个跟踪项目并使用SQLObject python ORM的应用程序。在某个时间点,应用程序会检查表是否太大,如果表中的项目超过 10000 个,则会删除前 N 个项目,以便表中的项目达到 10000 个。通过SQLObject 记录下来的优雅而有效的方法是什么?我所追求的所有解决方案都是缓慢且尴尬的:(。

最佳答案

我个人没有使用过SQLOBJECT。因此,这是一个基于按插入日期排序记录的简单删除语句,最旧的N 记录将被删除,并且位于MYSQL 中。无法设置limit clause using a variable due to this bug ,所以我用了最直接的方法。

对于这个示例,我将阈值设置为 6,因为很难达到 10000...

示例表:

COL1    COL2
1       112
2       0
3       20
4       10
5       100
6       30
7       200
8       108

set @table_count:=0;
set @excess_count:=0;

select count(*) into @table_count
from tablex;

select (case when @table_count > 6
then (@table_count -6)
else 0 end) into @excess_count
;

select * 
from tablex
where col1 between 1 and @excess_count
order by col1 asc
;

选择的记录:

COL1    COL2
1       112
2       0

以上查询按col1对记录进行排序,您可以根据您的情况进行更改。因此,删除查询可以基于最后一个 select 构建。因此最好编写一个存储过程...因为这都是一堆笨拙语句...

关于python - SQLObject:如何从表中删除前N个对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14158465/

相关文章:

python - 如何使用 Selenium 验证 jpg 是否显示在页面上?

hibernate - JPA @Column 中长度属性的映射不正确

python - Numpy fft 卡住更长的样本

python - 如何制作单个值的列表?

SQL 使用 sp_HelpText 查看链接服务器上的存储过程

mysql - SQL 如何从表中选择最多 5 个值?

mysql - 修改MySQL语句以按时间间隔过滤数据

java - JPA : one table with primary key and another table with primary and foreign key

ruby-on-rails - rails - postgres 或 rails 是否自动验证 datetime 列只能有 datetime 对象?

python - 在Python中读取具有不同列数的文本文件