On Jun 17, 10:36 am, Hans <[EMAIL PROTECTED]> wrote:
> I'm not sure I completely understand what's going on, so I apologize
> is this is obvious use error :)
>
> I'm trying to add to the create_all() method (by wrapping in my own
> method) for some custom SQL to be executed after the basic
> metadata.create_all() method is finished.
>
> More specifically, I have something like this:
>
> def create_all(metadata, engine):
>     metadata.create_all(engine)
>     s = Session()
>     s.begin()
>     engine.func.AddGeometryColumn('mytable', 'geo_col', 4326, 'POINT',
> 2).execute()
>     s.commit()

what's going on here is that the Session's transaction has no
interaction with the call to engine.func.XXX().execute().  There is no
thread-local context in progress by default.  Additionally, the
specific call you are making, "AddGeometryColumn", is not recognized
by SQLA as an "autocommit" phrase so even the engine.execute() does
not issue its own COMMIT.

Your above app would work if you instead bound the Session to the
engine (Session(bind=engine)) and used Session.execute().  Its a
little weird to use a Session here at all since no ORM functionality
is needed and I'd opt instead to use a Connection/Transaction combo,
but even better in this specific case is to use a DDL() construct,
which will execute automatically after a table create:

http://www.sqlalchemy.org/docs/04/sqlalchemy_schema.html#docstrings_sqlalchemy.schema_DDL


--~--~---------~--~----~------------~-------~--~----~
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 [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to