Каково различие между фильтром и filter_by в SQLAlchemy?

Мог любой объяснять различие между filter и filter_by функции в SQLAlchemy? Я смущен и не могу действительно видеть различие. Какой я должен использовать?

277
задан T Zengerink 4 July 2012 в 10:19
поделиться

3 ответа

filter_by используется для простых запросов на имена колонок, используя обычные kwargs, такие как

db.users.filter_by(name='Joe')

То же самое можно сделать с filter, не используя kwargs, а используя оператор равенства '==', который был перегружен на db.users.name объекте:

db.users.filter(db.users). name=='Joe')

Также можно писать более мощные запросы, используя filter, такие как выражения как:

db.users.filter(или_(db.users.name=='Ryan', db.users. country=='England'))

354
ответ дан 23 November 2019 в 02:06
поделиться

Мы на самом деле были объединены изначально вместе, то есть существовала «фильтр» -подобный метод, который принял * args и ** Kwargs , где вы можете пройти выражение SQL или Ключевых слов аргументов (или оба). На самом деле я нахожу, что намного удобнее, но люди всегда были запутаны этим, так как они обычно все еще превышают разницу между колонком == Expression и ключевое слово = выражение . Итак, мы раскладываем их.

110
ответ дан 23 November 2019 в 02:06
поделиться

filter_by использует аргументы ключевого слова, тогда как filter разрешает питонические аргументы фильтрации, такие как filter (User.name == "john")

34
ответ дан 23 November 2019 в 02:06
поделиться
Другие вопросы по тегам:

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