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
-~----------~----~----~----~------~----~------~--~---

Reply via email to