That did the trick, thanks. Well, actually, it did the trick for PostgreSQL but sqlite isn't rolling back. The SA logs show the same commands are being sent to both. Here's an example:
$ rm test1.sqlite $ python sa_create_table_transaction_test.py 2009-02-06 13:39:29,006 INFO sqlalchemy.engine.base.Engine.0x..d0 BEGIN 2009-02-06 13:39:29,007 INFO sqlalchemy.engine.base.Engine.0x..d0 CREATE TABLE table1 ( col1 INTEGER ) 2009-02-06 13:39:29,007 INFO sqlalchemy.engine.base.Engine.0x..d0 {} 2009-02-06 13:39:29,021 INFO sqlalchemy.engine.base.Engine.0x..d0 CREATE TABLE table2 ( col1 INTEGER ) 2009-02-06 13:39:29,021 INFO sqlalchemy.engine.base.Engine.0x..d0 {} 2009-02-06 13:39:29,024 INFO sqlalchemy.engine.base.Engine.0x..d0 CREATE TABLE table2 ( col1 INTEGER ) 2009-02-06 13:39:29,024 INFO sqlalchemy.engine.base.Engine.0x..d0 {} 2009-02-06 13:39:29,027 INFO sqlalchemy.engine.base.Engine.0x..d0 ROLLBACK $ sqlite3 test1.sqlite Loading resources from /Users/chris/.sqliterc SQLite version 3.4.0 Enter ".help" for instructions sqlite> .tables table1 table2 sqlite> And the updated test script: # ---- import sqlalchemy as sa engine = sa.create_engine('sqlite:///test1.sqlite') #engine = sa.create_engine('postgres://localhost/test1') engine.echo = True metadata = sa.MetaData() table1 = sa.Table("table1", metadata, sa.Column('col1', sa.types.Integer,), ) table2 = sa.Table("table2", metadata, sa.Column('col1', sa.types.Integer,), ) table3 = sa.Table("table3", metadata, sa.Column('col1', sa.types.Integer,), ) metadata.bind = engine connection = engine.connect() trans = connection.begin() try: table1.create(bind=connection) table2.create(bind=connection) table2.create(bind=connection) table3.create(bind=connection) trans.commit() except: trans.rollback() # ---- Cheers, Chris On Feb 6, 2:08 am, Michael Bayer <mike...@zzzcomputing.com> wrote: > create() and create_all() take a "bind" argument which can be an > engine or connection. you want the connection in this case. > > On Feb 5, 2009, at 5:27 AM, Chris Miles wrote: > > I can't find away to link table.create() with the existing > > transaction. --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---