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
-~----------~----~----~----~------~----~------~--~---

Reply via email to