2013-08-25 10 views
0

Я сталкиваюсь с этой ошибкой при запросе таблицы pytables, где метод передает строку с 50 условиями. Эти условия в основном представляют собой перевод предложения SQL IN, то есть я хочу получить записи, где конкретное поле равно определенному списку значений.Pytables NumExpr ValueError: слишком много входов при запросе с большим количеством условий

C:\Python2764\lib\site-packages\numexpr\necompiler.pyc in evaluate(ex, local_dict, global_dict, out, order, casting, **kwargs) 
    744  kwargs = {'out': out, 'order': order, 'casting': casting, 
    745    'ex_uses_vml': ex_uses_vml} 
--> 746  return compiled_ex(*arguments, **kwargs) 

ValueError: too many inputs 

Каким будет другой способ выполнения одного и того же запроса? Моя первая мысль - выполнить запрос 50 раз, один раз для каждого значения и объединить результаты. Я надеялся, что есть более элегантное решение.

Есть ли известное ограничение на количество условий, которые могут быть переданы numexpr?

ответ

1

Я задал тот же вопрос парням Pytable на GitHub. (Кстати, у меня было 50 условий, переведенных из предложения SQL IN). Они были очень хороши и быстро реагировали. Это проблема с numpy:

This is a limitation of numexpr based on the NPY_MAXARGS value which is defined in numpy. Upgrading to numpy v1.8 may fix the issue. See numpy/numpy#226 and [1] . ...
...
Oh and by the way, the limit is NPY_MAXARGS=32

Какую версию numpy вы используете? numpy 1.8 в порядке.

EDIT: На самом деле он не работает и на numpy 1.8. У них NPY_MAXARGS = 32 все еще