Форум сайта python.su
![[RSS Feed] [RSS Feed]](/static/djangobb_forum/img/feed-icon-small.png) 
			 
							 0
  0   
								
								Есть модель, к примеру User, в коде самого приложения используется так:
...
u = User.query.filter_by(status=UNPROCESSED).one()
...
...
u = User.get_next_unprocessed()
..
Офлайн
 
							 1
  1   
								
								Можно
Офлайн
 
							 0
  0   
								
								j2aок. спасибо ;-)
Можно
...
import schema as s
...
class User(OrmObject):
@classmethod
def get_next_unprocessed(cls):
user = cls.query.from_statement("select * from %s "
"where status=:status for update" % s.users.name).\
params(status=ST_UNPROCESSED).first()
if user:
session = object_session(user)
user.status = ST_HZ
session.commit()
return user
Session.mapper(Users, s.users)
Офлайн
 
							 20
  20   
								
								Я не знаю что такое “for update” :-).
Во всем остальном не вижу проблемы, но я часто передаю session=None в подобные методы. В таком случае, либо используется переданная в параметрах сессия, либо создается локальная.
> User.query
С таким не сталкивался. Пойду читать документацию. Сессия создаётся во время запроса?
Я просто знаю, что если на сессию нет ссылок она уничтожается (нормальное поведение Python-объектов) и все ассоциированные объекты (результат запроса user) отвязываются от этой сессии. Соответственно ты не сможешь получить сессию через object_session.
..bw
Офлайн
 
							 14
  14   
								
								Мдаа. С SQLAlchemy работал с бородатой 0.1 версии, но после каждого нового релиза выползают неизведанные возможности. И чтение CHANGES не всегда помогает.
object_session проскользнул мимо…
Спасибо.
Офлайн
 
							 20
  20   
								
								> object_session проскользнул мимо…
Получается я не один такой :-).
..bw
Офлайн
 
							 0
  0   
								
								bwЧто то вроде того. http://www.sqlalchemy.org/docs/04/session.html#unitofwork_contextual_associating
> User.query
С таким не сталкивался. Пойду читать документацию. Сессия создаётся во время запроса?
Офлайн
 
							 20
  20   
								
								Припоминаю. Я пропустил эту часть, так как предпочитаю создавать сессии явно.
Напоминает работу с Django ORM, почему мне Django и не нравится, отчасти по этому.
> Я просто знаю, что если на сессию нет ссылок она уничтожается
С такими сессиями этого не будет происходить.
..bw
Офлайн
![[RSS Feed] [RSS Feed]](/static/djangobb_forum/img/feed-icon-small.png)