On Aug 2, 2011, at 11:31 AM, RVince wrote: > 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
there's nothing wrong with assigning a ResultProxy to c.result, then iterating it in a template, as long as the connection context remains open. Your premature closing it is the likely issue here. > > On Aug 2, 10:06 am, Michael Bayer <mike...@zzzcomputing.com> 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 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.