On Tue, Oct 27, 2009 at 16:22 -0400, Michael Bayer wrote:
> Wolodja Wentland wrote:
> >
> > def create(self):
> >     """Create this database"""
> >     # set isolation level to AUTOCOMMIT
> >     # postgres can't CREATE databases within a transaction
> >     self._admin_engine.connect().connection.connection.set_isolation_level(
> >         ISOLATION_LEVEL_AUTOCOMMIT)
> >
> >     self.admin_session.execute('CREATE DATABASE %s'%(self.name))

> there's nothing about the above code that guarantees the connection on
> which you called set_isolation_level() is the one used by your
> session.execute().   I think you mean to call execute("CREATE DATABASE")
> on the connection returned by self._admin_engine.connect().

You are right! I changed the code to this:

--- snip ---
def create(self):
    """Create this database"""
    # set isolation level to AUTOCOMMIT
    # postgres can't CREATE databases within a transaction
    conn = self._admin_engine.connect()
    conn.connection.connection.set_isolation_level(
        ISOLATION_LEVEL_AUTOCOMMIT)

    conn.execute('CREATE DATABASE %s'%(self.name))

    conn.connection.connection.set_isolation_level(
        ISOLATION_LEVEL_READ_COMMITTED)
--- snip ---

and it works like a charm.

But i still have some little questions...

* Is there an even better way to do this? ;-)

* Is it necessary to set the isolation level to the value it had
  before I set it to ISOLATION_LEVEL_AUTOCOMMIT to make sure that no
  connection uses ISOLATION_LEVEL_AUTOCOMMIT in the future without
  explicitly setting that?

  (I will change the code so it remembers the value of isolation_level
  and use that instead of it to ISOLATION_LEVEL_READ_COMMITTED
  explicitly)

* Why the .connection.connection ? I remember that I had to write just
  one .connection in the past. 

And one more word... This is the fastest mailing list I have ever used.
Thank you so much for reacting so fast on this ML, thank you very much
for SA and thanks for the solution to my problem!

have a great afternoon

    Wolodja Wentland

Attachment: signature.asc
Description: Digital signature

Reply via email to