2014-02-10 3 views
4

Flask-SQLAlchemy дает возможность фильтровать запрос. Есть широкий ряд способов, вы можете фильтровать запрос - примеры Документы Колбы-SQLAlchemy дают:Фильтры и операторы Flask-SQLAlchemy

User.query.filter_by(username='peter') # Returns all users named 'peter' 
User.query.filter(User.email.endswith('@example.com')) # Returns all users with emails ending in '@example.com' 

Я также нашел, что это за один-к-многих:

User.query.filter(User.addresses.any(address=address)) # Returns all users who have a particular address listed as one of their addresses 

Вопросов:

  • Кто-нибудь знает, какие фильтры действительно доступны для использования? Я не могу найти список фильтров в документации, что затрудняет запрос к базам данных.
  • В частности, какой фильтр я использовал бы, чтобы проверить, содержится ли электронное письмо пользователя в определенном наборе адресов электронной почты?

ответ

15

Для получения списка фильтров проверки SQLAlchemy documentation

, что фильтр я бы использовать, чтобы проверить, электронная почта пользователя содержится в определенном наборе адреса электронной почты?

Колонна имеет метод .in_() для использования в запросе. Так что-то вроде:

res = User.query.filter(User.email.in_(('[email protected]', '[email protected]'))) 

Here вы можете найти список методы колонки для выражений.

+5

Дополнительные атрибуты, такие как 'in_' и' endswith', см. В разделе [Общие операторы фильтра] (http://docs.sqlalchemy.org/en/rel_0_9/orm/tutorial.html#common-filter-operators) и [ ColumnOperators] (http://docs.sqlalchemy.org/en/rel_0_9/core/sqlelement.html#sqlalchemy.sql.operators.ColumnOperators). –

+0

Это именно то, что я искал, спасибо! : D И этот метод '._in' кажется именно тем, что я хочу прямо сейчас. – Matthew

Смежные вопросы