РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
144 of 711 menu

Метод configure

Метод configure класса scoped_session позволяет изменить параметры уже созданной фабрики сессий. Первым параметром метод принимает функцию session_factory, которая создает объекты сессий. Также можно передать дополнительные именованные аргументы, например, bind для привязки к движку.

Этот метод полезен, когда объект scoped_session был создан заранее, а параметры подключения к базе данных становятся известны позже, например, после загрузки конфигурации.

Синтаксис

scoped_session.configure(session_factory, [bind], [class_])

Пример

Давайте создадим фабрику сессий и затем настроим ее с помощью метода configure:

from sqlalchemy import create_engine from sqlalchemy.orm import scoped_session, sessionmaker engine = create_engine('sqlite:///:memory:') Session = scoped_session(sessionmaker()) Session.configure(bind=engine) print(Session.bind)

Результат выполнения кода:

"Engine(sqlite:///:memory:)"

Пример

Давайте создадим таблицу и добавим запись, используя настроенную через configure фабрику сессий:

from sqlalchemy import create_engine, Integer, String from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column from sqlalchemy.orm import scoped_session, sessionmaker class Base(DeclarativeBase): pass class Article(Base): __tablename__ = 'articles' id: Mapped[int] = mapped_column(Integer, primary_key=True) title: Mapped[str] = mapped_column(String) engine = create_engine('sqlite:///:memory:') Base.metadata.create_all(engine) Session = scoped_session(sessionmaker()) Session.configure(bind=engine) session = Session() article = Article(title='article') session.add(article) session.commit() res = session.query(Article).all() print([a.title for a in res])

Результат выполнения кода:

['article']

Пример

Давайте изменим класс сессии через параметр class_ при повторной настройке:

from sqlalchemy import create_engine from sqlalchemy.orm import scoped_session, sessionmaker from sqlalchemy.orm import Session as SessionClass engine = create_engine('sqlite:///:memory:') Session = scoped_session(sessionmaker()) Session.configure(bind=engine, class_=SessionClass) print(Session.class_)

Результат выполнения кода:

<class 'sqlalchemy.orm.session.Session'>

Смотрите также

  • класс scoped_session,
    который создает фабрику сессий с областью видимости
  • метод remove,
    который удаляет текущую сессию из реестра
  • метод query,
    который возвращает объект запроса текущей сессии
  • метод configure,
    который настраивает параметры фабрики сессий
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить