Hi Lance, On Wed, 28 Jul 2010 06:45:30 -0500, Lance Edgar <lance.ed...@gmail.com> wrote: > --=-dKyzuPx4woj1H0B5IT48 > Content-Type: text/plain; charset=ISO-8859-1 > > On Wed, 2010-07-28 at 11:33 +0000, Faheem Mitha wrote: > >> On Wed, 28 Jul 2010 15:17:09 +0530 (IST), Faheem Mitha >> <fah...@email.unc.edu> wrote: >> > >> > Hi, >> >> > When calling create_all on a metadata instance after a session has >> > alrady been opened causes the create_all to hang, I assume because >> > the session is blocking the create_all. Is there some way to get >> > create_all to use the existing session, or any other graceful way >> > around this? Thanks. >> >> > I guess another option is to close and then reopen the session after >> > the create_all has been called, but I'd prefer not to do that if >> > possible. >> >> Puting a session.close() before the create_all fixes the problem. I >> assume this means that create_all doesn't work in the middle of a >> transaction, or something like that? > > > I can't speak to the underlying mechanics of create_all(), but calling > session.close() prior to create_all() would work, as you say. Another > option would be to simply not use a session, but instead just a > *connection*. Sessions are specific to the ORM which, according to the > code you posted, you are not using. So if you really just need to make > a SELECT call to a table, then instead of creating a session and > calling .execute() on it, you could instead do this:
> db = create_engine(dbstring) > meta.bind = db > db.echo = 'debug' > make_foo(meta) > meta.create_all() > db.connect().execute("select * from foo;") > make_bar(meta) > meta.create_all() The example was just an example. After going back and forth a bit, I've finally standardized on session as the thing to more around in my application. The db.connect thing works, I think, because autocommit is the default for connect. I'd like to hear an explanation of why create_all is blocked here. I periodically have my scripts hang for no apparent reason, almost always because the db is blocking something, so would like to become more educated on this issue. Regards, Faheem -- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To post to this group, send email to sqlalch...@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.