Нет такой Duplicated jQuery Selector
ошибки; IntelliJ (и другие IDE из идеи, подобной WebStorm ...) выдают предупреждение, в котором говорится, что вы должны хранить выбор jQuery в локальной переменной, а не повторять выбор.
Выдержка из документации jQuery :
Сохранение выборов
jQuery не кэширует элементы для вас. Если вы сделали выбор, который вам может потребоваться сделать снова, вы должны сохранить выбор в переменной, а не делать выбор повторно.
1| var divs = $( "div" );
После того, как выборка сохранена в переменной, вы можете вызывать методы jQuery для переменной так же, как вы вызывали бы их в исходной выборке.
Выборка выбирает только те элементы, которые находятся на странице во время выбора. Если элементы будут добавлены на страницу позже, вам придется повторить выделение или иным образом добавить их к выделению, сохраненному в переменной. Сохраненные выборки не обновляются магическим образом при изменении DOM.
Однако в вашем коде нет дублированного выбора jQuery, поэтому я уверен, что предупреждение приходит откуда-то еще ... Что соответствует тому, что ошибка сохраняется после добавления отсутствующего $
.
Как правило, рекомендуется добавлять сообщение об ошибке в ваши вопросы.
Что ж, благодаря Хао Ляню, описанному выше, я придумал функциональное, хотя и болезненное решение.
Предположим, что у нас есть сопоставленный класс в декларативном стиле, Clazz
, и список
кортежей составных значений первичного ключа, значений
(Отредактировано для использования лучшего (IMO) стиля генерации sql):
from sqlalchemy.sql.expression import text,bindparam ... def __gParams(self, f, vs, ts, bs): for j,v in enumerate(vs): key = f % (j+97) bs.append(bindparam(key, value=v, type_=ts[j])) yield ':%s' % key def __gRows(self, ts, values, bs): for i,vs in enumerate(values): f = '%%c%d' % i yield '(%s)' % ', '.join(self.__gParams(f, vs, ts, bs)) def __gKeys(self, k, ts): for c in k: ts.append(c.type) yield str(c) def __makeSql(self,Clazz, values): t = [] b = [] return text( '(%s) in (%s)' % ( ', '.join(self.__gKeys(Clazz.__table__.primary_key,t)), ', '.join(self.__gRows(t,values,b))), bindparams=b)
Это решение работает для составных или простых первичных ключей. Вероятно, он немного медленнее, чем col.in_ (keys)
для простых первичных ключей.
Я все еще интересуюсь предложениями лучших способов сделать это, но этот способ пока работает и работает заметно лучше, чем способ or_ (and_ (conditions))
или способ для key in keys: do_stuff (q.get (key))
способ.