sqlAlchemy选择like和max

时间:2017-08-16 05:57:19

标签: python mysql sql python-3.x sqlalchemy

我尝试从表'tablename'中的'id'列中选择最高值,该列以'v3'开头,结尾为't'。< / p>

这适用于以下SQL语句:

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

但似乎我的sqlAlchemy代码片段中有一些错误,无法找到错误。

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 个答案:

答案 0 :(得分:1)

首先,要计算列的 max ,您需要像这样查询:

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'))))