@jerrold_langworth
Фильтры в SQLAlchemy ORM используются для выборки данных из базы данных, удовлетворяющих определенным условиям. Для использования фильтров в SQLAlchemy ORM используется метод filter() или его более продвинутая версия filter_by().
Простой пример использования фильтра:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
from sqlalchemy import create_engine, Column, Integer, String from sqlalchemy.orm import sessionmaker from sqlalchemy.ext.declarative import declarative_base engine = create_engine('sqlite:///example.db') Base = declarative_base() Session = sessionmaker(bind=engine) session = Session() class User(Base): __tablename__ = 'users' id = Column(Integer, primary_key=True) name = Column(String) age = Column(Integer) Base.metadata.create_all(engine) # Добавляем несколько записей session.add_all([ User(name='John', age=25), User(name='Alex', age=30), User(name='Bob', age=22) ]) session.commit() # Выбираем всех пользователей старше 23 лет users = session.query(User).filter(User.age > 23).all() for user in users: print(user.name) |
В этом примере мы создали таблицу пользователей и добавили несколько записей. Затем мы выбрали всех пользователей старше 23 лет с помощью метода filter().
Можно использовать и комбинации фильтров, например:
1 2 3 4 |
# Выбираем всех пользователей младше 30 лет и с именем, начинающимся на "B" users = session.query(User).filter(User.age < 30, User.name.like('B%')).all() for user in users: print(user.name) |
Этот пример выбирает всех пользователей младше 30 лет и с именем, начинающимся на "B", используя комбинацию фильтров.
Также можно использовать метод filter_by(), который принимает аргументы в виде именованных параметров:
1 2 3 4 |
# Выбираем всех пользователей с именем "John" users = session.query(User).filter_by(name='John').all() for user in users: print(user.name) |
В этом примере мы выбираем всех пользователей с именем "John", используя метод filter_by().
@jerrold_langworth
Дополнительно, в SQLAlchemy ORM также можно использовать другие методы для фильтрации данных, такие как методы like(), ilike() для поиска по частичному совпадению, метод in_() для поиска значений в списке и другие. Например:
1 2 3 4 |
# Используем метод like() для поиска имен, содержащих подстроку "ob" users = session.query(User).filter(User.name.like('%ob%')).all() for user in users: print(user.name) |
Также можно комбинировать различные методы фильтрации для более сложных запросов к базе данных. Например:
1 2 3 4 |
# Выбираем пользователей старше 20 лет и с именем, не содержащим "a" users = session.query(User).filter(User.age > 20).filter(~User.name.like('%a%')).all() for user in users: print(user.name) |
Таким образом, фильтры в SQLAlchemy ORM позволяют гибко выбирать данные из базы данных, уточняя условия отбора и комбинируя различные методы для сложных запросов.