如何获得每100条记录中的一条记录?



我在表中有10,000条记录。对于其中一种情况,我必须在每100条记录中只获取一条记录。我该怎么办?

我读了关于SET/OFFSETLIMIT。我想这样写:

def get_one_paczka_per_n_paczek(db: Session, sesja_id: int, per_n: int):
liczba = 0
lista = []
while True:
print(f"liczba elementów {len(lista)}")
element = db.query(PaczkaDanych).offset(liczba).first()
print(element)
if element is not None:
lista.append(element)
else:
break
liczba = liczba + per_n
return lista

也许在一个循环中存在比LIMITSET更聪明的东西?

如果你的表有一个自动加1的整数主键,那么你可以返回MOD(id, 100)等于1的行:

import sqlalchemy as sa
paczka = sa.Table("paczka", sa.MetaData(), autoload_with=engine)
with engine.connect() as conn:
results = conn.execute(
sa.select(paczka).where(sa.func.mod(paczka.c.id, 100) == 1)
).fetchall()

这并不一定是完美的,因为自动递增列不保证是完全顺序的(即,值中可能存在空白),但它可能"足够接近"。这取决于你的具体任务。

最新更新