Комплекс Sqlalchemy in_ пункт с кортежем в списке кортежей

Нет такой Duplicated jQuery Selector ошибки; IntelliJ (и другие IDE из идеи, подобной WebStorm ...) выдают предупреждение, в котором говорится, что вы должны хранить выбор jQuery в локальной переменной, а не повторять выбор.

Выдержка из документации jQuery :

Сохранение выборов

jQuery не кэширует элементы для вас. Если вы сделали выбор, который вам может потребоваться сделать снова, вы должны сохранить выбор в переменной, а не делать выбор повторно.

1| var divs = $( "div" );

После того, как выборка сохранена в переменной, вы можете вызывать методы jQuery для переменной так же, как вы вызывали бы их в исходной выборке.

Выборка выбирает только те элементы, которые находятся на странице во время выбора. Если элементы будут добавлены на страницу позже, вам придется повторить выделение или иным образом добавить их к выделению, сохраненному в переменной. Сохраненные выборки не обновляются магическим образом при изменении DOM.

Однако в вашем коде нет дублированного выбора jQuery, поэтому я уверен, что предупреждение приходит откуда-то еще ... Что соответствует тому, что ошибка сохраняется после добавления отсутствующего $.

Как правило, рекомендуется добавлять сообщение об ошибке в ваши вопросы.

6
задан Antti Haapala 9 May 2018 в 06:09
поделиться

2 ответа

Что ж, благодаря Хао Ляню, описанному выше, я придумал функциональное, хотя и болезненное решение.

Предположим, что у нас есть сопоставленный класс в декларативном стиле, 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)) способ.

3
ответ дан 8 December 2019 в 03:54
поделиться

см. Конструкцию tuple_ в SQLAlchemy 0.6

2
ответ дан 8 December 2019 в 03:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: