On Jun 28, 2011, at 4:29 AM, NiL wrote:
Hi list,
I have a turbogears controller, the model are elixir defined.
def copy(self, scenario_id, **kwargs):
copy a scenario
:param scenario_id: id of a :class:`model.Scenario`
:type media_id: string
user = request.environ['repoze.who.identity']['user']
scenario = Scenario.get(scenario_id)
clone = Scenario(owner = user)
Session.add(clone)
Session.commit()
from nose.tools import set_trace; set_trace()
details = kwargs.get('details', False)
return dict(scenario=clone, details=details)
commit() expires all attributes.As soon as they are accessed again, the
database must be queried, and a new transaction begins.
the real issue here is that its better to have a single commit() that encloses
a series of operations, and nothing happens outside of the commit(). Calling
commit() in an ad-hoc fashion inside of business methods is not a good pattern
and suggests the application doesnt have clear boundaries as to when
transactions begin and end.
I'm bound to a postgres database.
just before the commit, I can observe a IDLE in transaction lock
in PG (normal)
Then I commit() the output from sqla debug is something like :
2011-06-28 09:56:16,804 INFO sqlalchemy.engine.base.Engine.0x...3dcc
BEGIN (implicit)
2011-06-28 09:56:16,806 INFO sqlalchemy.engine.base.Engine.0x...3dcc
SELECT user.user_id AS user_user_id, user.user_name AS
user_user_name, user.password AS user_password,
user.password_check AS user_password_check, user.email_address AS
user_email_address, user.display_name AS user_display_name,
user.created AS user_created, user.active AS user_active,
user.permission_assoc_id AS user_permission_assoc_id
FROM user
WHERE user.user_id = %(param_1)s
and thus IDLE in transaction is back.
When I run this in test, the next thing is the tear down, that will
try to drop all tables to run next test, and everything will get
stuck
what am I missing here ?
regards
NIL
--
You received this message because you are subscribed to the Google Groups
sqlalchemy group.
To post to this group, send email to sqlalchemy@googlegroups.com.
To unsubscribe from this group, send email to
sqlalchemy+unsubscr...@googlegroups.com.
For more options, visit this group at
http://groups.google.com/group/sqlalchemy?hl=en.
--
You received this message because you are subscribed to the Google Groups
sqlalchemy group.
To post to this group, send email to sqlalchemy@googlegroups.com.
To unsubscribe from this group, send email to
sqlalchemy+unsubscr...@googlegroups.com.
For more options, visit this group at
http://groups.google.com/group/sqlalchemy?hl=en.