Создайте запрос django из строки

#python #django #parsing

Вопрос:

У меня есть список строк, которые представлены в таком странном формате, как этот:

 OR(EQUAL(id,111),EQUAL(id,222))  AND(EQUAL(id,333),EQUAL(name,"John"))  

Я хочу разобрать эти строки и запустить их в качестве фильтра в Django, как это:

 from django.db.models import Q  People.objects.filter(Q(id=111) | Q(id=222)) People.objects.filter(Q(id=333) amp; Q(name="John"))  

Есть ли парсер, который может мне в этом помочь? Или мне пришлось бы писать его с нуля?

Комментарии:

1. Что может быть полезно здесь, так это тот факт, что строки кажутся допустимым синтаксисом Python. Вы можете реализовать функции и выполнить eval() с пространством имен, ограниченным этими функциями. Только имена могут быть сложными.

2. Где генерируются эти строки? Идеальным решением было бы изменить формат строк на что-то более простое для анализа