Как запросить фильтр по возвращенному ответу в Python, используя Flask API - PullRequest
0 голосов
/ 11 февраля 2020

У меня есть задача перенести все ASP.NET Web API в Pyhton API. Я использую Flask с Blueprints для достижения этого.

Сейчас я борюсь с filtering возвращенными результатами в моем Python API (разработанном с использованием Flask)

Вот как Я делаю это в ASP.NET Web API

query = String.Concat(queryMain, queryWhere, queryOrder, "  order by " + (String.IsNullOrEmpty(orderBy) ? " start_time " : orderBy + " " + orderType));
var ctx = new LairdDbContext();

        try
        {
            var anomalyList = ctx.AnomaliUinque.SqlQuery(query).ToList<AnomalyUnique>();
            if (anomalyList == null)
            {
                return null;
            }
            Ag.Items = anomalyList.Where(x => x.rownumber >= startfrom && x.rownumber <= skp).ToList();
            Ag.Total = anomalyList.Count();
            return Ag;
        }

Обратите внимание, я получаю основные результаты, используя
var anomalyList = ctx.AnomaliUinque.SqlQuery(query).ToList<AnomalyUnique>();

И затем я фильтрую возвращаемые результаты, используя следующую строку
Ag.Items = anomalyList.Where(x => x.rownumber >= startfrom && x.rownumber <= skp).ToList();

В приведенной выше строке кода rownumber является одним из столбцов в возвращаемом query

Вот моя версия Python Flask API [Что неверно, поскольку в сгенерированном запросе есть синтаксические ошибки из-за части 'WHERE rownumber']

query = querymain + queryWhere + queryOrder + ' order by ' + m_orderBy + ' WHERE rownumber >= {0} AND rownumber <= {1}'.format(startfrom,skp)
print(query)
try:
    cursor.execute(query)
    rows = cursor.fetchall()
    resp = jsonify(rows)
    resp.headers.add('Access-Control-Allow-Origin', '*')
    resp.status_code = 200
    print(resp)
    return resp
except Exception as e:

    print(e)
    return '', 400
finally:
    cursor.close()

Теперь у меня вопрос, как мне реплицировать тот же фильтр в Python, используя * 1039? * API, в частности, следующая строка.

anomalyList.Where(x => x.rownumber >= startfrom && x.rownumber <= skp).ToList();

1 Ответ

0 голосов
/ 11 февраля 2020

Используйте filter() из стандартной библиотеки

filter(lambda x: x["rownumber"] >= startfrom && x["rownumber"] <= skp, resp)
...