2016-07-02 13 views
3

wie kann ich die row_number == 1 in der folgenden Abfrage filtern:Filter durch row_number in sqlalchemy

query = session.query(Foo, func.row_number().over(
     partition_by=Foo.foo_field, order_by=desc(Foo.foo_date_time)).label("row_number")) 

    query = query.filter(Foo.time_key <= time_key) 
    # query = query.filter(row_number == 1) 
    result = query.all() 

Antwort

10

ich es gefunden:

row_number_column = func.row_number().over(partition_by=Foo.foo_field, order_by=desc(Foo.foo_date_time)).label('row_number') 
    query = self.session.query(Foo) 
    query = query.filter(Foo.time_key <= time_key) 
    query = query.add_column(row_number_column) 
    query = query.from_self().filter(row_number_column == 1)