create_session() has different defaults than sessionmaker() for historical reasons. for the usual defaults, use sessionmaker()(). if there's a document which says create_session() has the *same* default behavior, that's a bug. I thought we had added some explicit note to the session docs about this but I haven't checked lately.
Mike Orr wrote: > > I have a standalone utility using a model based on Declarative on > MySQL using SQLAlchemy 0.5.2. Most of the code is at the SQL level > but at one point I use the ORM to update or insert a summary record. > So I figured I'd use create_session because it's a single-threaded > utility. > > === > sess = orm.create_session(bind=conn) > q = sess.query(model.Monthly).filter_by(...) > monthly = q.first() > if not monthly: > monthly = model.Monthly() > ... > sess.add(monthly) > ... > sess.commit() > === > > That raises "sqlalchemy.exc.InvalidRequestError: No transaction is > begun." To work around that I have to put "sess.begin()" after > creating the session. But why? I don't have to do this when using > scoped_session in Pylons. The SQLAlchemy docs seem to say that it > automatically manages transactions if you don't change the default > session arguments, and that this works identically with Session, > create_session, and sessionmaker. So why is it behaving differently > here? > > -- > Mike Orr <sluggos...@gmail.com> > > > > --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---