Я создаю механизм запросов для базы данных, которая извлекает данные из SQL и других источников. Для обычных случаев использования пользователи могут использовать веб-форму, в которой использование может определять параметры фильтрации с помощью входов выбора и диапазона. Но для более сложных случаев использования, я хотел бы указать в поле уравнения фильтрации, где пользователи могут ввестиАнализ и построение фильтрующих запросов, аналогичных предложению SQL WHERE в Python/JavaScript
И, ИЛИ
Уплотненного скобка
имен переменных
-
, <, =,! = Операторы
Так уравнение фильтрации может выглядеть примерно так:
((age > 50) or (weight > 100)) and diabetes='yes'
Затем этот вход будет анализироваться, входные обнаруженные ошибки (несуществующего имени переменной, и т.д.) и SQL алхимии запросы, построенные на его основе.
я видел ранее сообщение о подобной проблеме https://stackoverflow.com/a/1395854/315168
Там, кажется, существует несколько языков и мини-язык парсеров для Python http://navarra.ca/?p=538
Однако, существует ли какой-либо пакет, который бы из коробки решение или близкое решение для моей проблемы? Если бы не самый простой способ построить такой синтаксический анализатор запросов и конструктор в Python?
Это также вариант для синтаксического анализа запроса на стороне клиента, а затем отправки обработанных элементов запроса на сервер через HTTP POST. –
Я думаю, что простая грамматика [EBNF] (https://en.wikipedia.org/wiki/Extended_Backus%E2%80%93Naur_Form) или [PEG] (http://en.wikipedia.org/wiki/Parsing_expression_grammar) для это будет менее 10 строк. Должно быть много вариантов для Python и JS, мне нравится [simpleparse] (http://simpleparse.sourceforge.net/scanning_with_simpleparse.html) для Python. –
Нашли это http://redquerybuilder.appspot.com/ –