Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 12, 2011 06:30:12

s_vilgelm
От:
Зарегистрирован: 2010-10-25
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

sqlalchemy для чего populate_existing()?

Можете объяснить для чего используется функция 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.



Офлайн

#2 Янв. 12, 2011 10:50:15

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

sqlalchemy для чего populate_existing()?

Объекты будут перечитаны из базы, даже если они есть в кеше sqlalchemy Session. Все их изменения будут отменены.



Офлайн

#3 Янв. 13, 2011 08:18:12

s_vilgelm
От:
Зарегистрирован: 2010-10-25
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

sqlalchemy для чего populate_existing()?

т.е. делаю так:

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 не будет. Я правильно понял?



Офлайн

#4 Янв. 13, 2011 10:07:32

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

sqlalchemy для чего populate_existing()?

Именно. Рассматривайте это как частичный Session.expire_all



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version