2017-08-16 37 views
1

我想選擇列最高值‘身份證’‘表名V3’這與開始',結尾是‘T’。SQLAlchemy的選擇與像和最大

這工作FINDE與下面的SQL語句:

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

但似乎我在SQLAlchemy的片段一些bug,無法發現其中的錯誤。

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

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

回答

1

首先,計算列的最大需要查詢這樣的:

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

要過濾使用布爾運算,您需要從SQLAlchemy的進口同等功能:

from sqlalchemy import and_ 
from sqlalchemy import not_ 

您的查詢可能是這樣的:

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

非常感謝。 :) – Jonas