Michael, Right, thats a better idea -- I am working with snippets of other people's code here. However, I still have the original problem of going from a ResultProxy object to output in a mako file which is a chasm I cannnot seem to bridge! RVInce
On Aug 2, 10:06 am, Michael Bayer <[email protected]> wrote: > On Aug 2, 2011, at 9:07 AM, RVince wrote: > > > In my controller class, I perform a rather basic, straightforward SQL > > query: > > > connection = engine.connect() > > connection, OK > > > trans = connection.begin() > > start a transaction, OK > > > try: > > c.result = connection.execute("select > > current_disposition_code,count(*) as num from cms_input_file group by > > current_disposition_code;") > > connection.close() > > close the connection ? what happened to trans, wheres the rollback or commit > ? what about your c.result that hasn't been iterated yet ? both of these > need an active Connection to proceed correctly. Technically the > transaction is fine with just the connection.close() at the end but its a > strange form that doesn't make the intent clear. The cursor referenced by > the ResultProxy definitely should have exclusive access to its parent > Connection for its whole lifespan, though, closing it out can have one of > several negative effects, depending on the backend and the configuration of > the connection pool. > > Want to know what would be easy here ? > > c.result = engine.execute("select * from my_table") > > then you're done. The ResultProxy in this case manages the Connection > itself which will be closed when the ResultProxy closes. However this > assumes you just need one SQL statement in a transaction, it seems that > perhaps the begin() call is because you're doing several things with the one > Connection. > > Ideally, assuming this is Pylons, you'd have a single Connection declared for > all controllers up in your BaseController, with a trans = connection.begin() > at the top and trans.rollback() at the bottom. That way the mechanics of > providing database context to controllers is handled in application logic and > not business logic. Or you'd have the ORM Session in place and just use > Session.execute() to get a result. -- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en.
