2017-08-16 2 views
1

Ich versuche, den höchsten Wert aus Spalte auszuwählen ‚id‘ in Tabelle ‚name v3‘, die mit beginnt ‚‘ und endet mit ‚t‘.sqlalchemy Wählen Sie mit, wie und max

Dies funktioniert findet mit der folgenden SQL-Anweisung:

SELECT max(_id_) 
FROM _db.tablename_ 
WHERE _id_ LIKE 'v3%' 
AND _id_ NOT LIKE '%T' 

Aber es scheint, dass ich einige Fehler in meinem sqlalchemy Schnipsel habe und nicht den Fehler gefunden.

query = session.query(_CLASSNAME_._ID_).filter(
     func.max(_CLASSNAME_._ID_.like('v4%'), not_(_CLASSNAME_._ID_.like('%T')))) 

for _res in query.all(): 
    print(_res) 

Antwort

1

Zuerst berechnet die max einer Spalte, die Sie wie folgt abgefragt werden müssen:

session.query(func.max(Table.column)) 

Um Boolesche Operationen in Filtern zu verwenden, müssen Sie äquivalente Funktionen von sqlalchemy importieren:

from sqlalchemy import and_ 
from sqlalchemy import not_ 

Ihre Anfrage könnte so etwas wie dieses:

query = (session.query(func.max(_CLASSNAME_._ID_)) 
     .filter(and_(_CLASSNAME_._ID_.like('v4%'), 
         not_(_CLASSNAME_._ID_.like('%T')))) 
+0

Vielen Dank. :) – Jonas