Найти - Пользователи
Полная версия: sqlalchemy для чего populate_existing()?
Начало » Базы данных » sqlalchemy для чего populate_existing()?
1
s_vilgelm
Можете объяснить для чего используется функция populate_existing()?
Вот пример:
        atses = session.query(model.ATS).populate_existing().all()
В чем отличие от:
        atses = session.query(model.ATS).all()
Вот описание из документации:
Return a Query that will expire and refresh all instances as they are loaded, or reused from the current Session.

populate_existing() does not improve behavior when the ORM is used normally - the Session object’s usual behavior of maintaining a transaction and expiring all attributes after rollback or commit handles object state automatically. This method is not intended for general use.
Андрей Светлов
Объекты будут перечитаны из базы, даже если они есть в кеше sqlalchemy Session. Все их изменения будут отменены.
s_vilgelm
т.е. делаю так:
ats = model.ATS()
ats.name='123'
session.add(ats)

atses = session.query(model.ATS).populate_existing().all()
Если с без populate_existing(), то в atses добжна быть с именем ‘123’, а если с populate_existing(), то ‘123’ в atses не будет. Я правильно понял?
Андрей Светлов
Именно. Рассматривайте это как частичный Session.expire_all
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB