Zapytanie SQLAlchemy zwracające tylko n wyników?

90

Szukałem w Google i czytałem dokumentację SQLAlchemy, ale nie znalazłem tego, czego szukam.

Szukam funkcji w SQLAlchemy, która ogranicza liczbę wyników zwracanych przez zapytanie do określonej liczby, na przykład: 5? Coś takiego first()lub all().

Xar
źródło

Odpowiedzi:

166

dla sqlalchemy >= 1.0.13 Użyj metody limitu .

query.(Model).filter(something).limit(5).all()
jkmacc
źródło
Wolę tę metodę od innych wymienionych, jest szczuplejsza, ponieważ dodatkowe dane nie są przesyłane przez sieć ...
Yaakov Bressler
10

Alternatywna składnia

query.(Model).filter(something)[:5].all()
mcolak
źródło
2
SQLAlchemy == 1.1.15, podbicie:AttributeError: 'list' object has no attribute 'all'
Waket Zheng
1
Użyj tego zapytania: query. (Model) .filter (coś) .limit (5) Działa dobrze w SQLAlchemy == 1.1.15
Rana
2
Jeśli to zrobisz [: 5] Myślę, że baza danych nadal pobierze wszystkie wyniki, a wtedy użyjesz tylko ostatnich 5. Zdecydowanie lepiej jest użyć limitu, aby zapobiec zwracaniu przez bazę danych dodatkowych danych.
Brian Sizemore
0

W moim przypadku działa jak

def get_members():
    m = Member.query[:30]
    return m
Anar Salimkhanov
źródło