如何每百条记录获取一条记录 - SQLAlchemy,
How get one record per each hundred of records - SQLAlchemy,
数据库:mysql
ORM - python
中的 SQLAlchemy
我在 table 中有一万条记录。对于其中一种情况,我必须每百条记录中只有一条记录。我该怎么办?
我读到了 SET/Offset 和 LIMIT。这一刻我想到了下面的事情
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
也许存在比在循环中使用 limit
和 set
更聪明的东西?
如果您的 table 有一个自动递增 1 的整数主键,那么您可以 return 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()
这不一定是完美的,因为不能保证自动增量列是完全连续的(即值中可能存在间隙),但它可能“足够接近”,具体取决于您的具体任务。
数据库:mysql
ORM - python
中的 SQLAlchemy我在 table 中有一万条记录。对于其中一种情况,我必须每百条记录中只有一条记录。我该怎么办?
我读到了 SET/Offset 和 LIMIT。这一刻我想到了下面的事情
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
也许存在比在循环中使用 limit
和 set
更聪明的东西?
如果您的 table 有一个自动递增 1 的整数主键,那么您可以 return 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()
这不一定是完美的,因为不能保证自动增量列是完全连续的(即值中可能存在间隙),但它可能“足够接近”,具体取决于您的具体任务。