Hello!
I can't create table in just created schema without commit() after CreateSchema
statement, code and traceback posted below.
Is it Ok? Or I make something wrong?
PS. Can I call CreateSchema with ".execute_if(callable_=should_create)" ?
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy.schema import CreateSchema
from epsilon.models import Base, SYSTEM_SCHEMA, SYSTEM_MODELS
engine =
create_engine('postgresql+psycopg2://USER:[email protected]:5432/epsilon',
echo=True)
DBSession = sessionmaker(bind=engine)()
Base.metadata.bind = engine
def create_schema(name):
s = CreateSchema(name)
DBSession.execute(s)
#DBSession.commit() // IF I uncomment this line, everything work fine
try:
create_schema(SYSTEM_SCHEMA)
DBSession.execute('SET search_path TO %s' % SYSTEM_SCHEMA)
for m in SYSTEM_MODELS:
m.__table__.create(checkfirst=True)
DBSession.commit()
except:
DBSession.rollback()
raise
*2015-06-28 20:39:04,633 INFO sqlalchemy.engine.base.Engine select version()
2015-06-28 20:39:04,633 INFO sqlalchemy.engine.base.Engine {}
2015-06-28 20:39:04,634 INFO sqlalchemy.engine.base.Engine select
current_schema()
2015-06-28 20:39:04,635 INFO sqlalchemy.engine.base.Engine {}
2015-06-28 20:39:04,636 INFO sqlalchemy.engine.base.Engine SELECT CAST('test
plain returns' AS VARCHAR(60)) AS anon_1
2015-06-28 20:39:04,636 INFO sqlalchemy.engine.base.Engine {}
2015-06-28 20:39:04,637 INFO sqlalchemy.engine.base.Engine SELECT CAST('test
unicode returns' AS VARCHAR(60)) AS anon_1
2015-06-28 20:39:04,638 INFO sqlalchemy.engine.base.Engine {}
2015-06-28 20:39:04,639 INFO sqlalchemy.engine.base.Engine show
standard_conforming_strings
2015-06-28 20:39:04,639 INFO sqlalchemy.engine.base.Engine {}
2015-06-28 20:39:04,640 INFO sqlalchemy.engine.base.Engine BEGIN (implicit)
2015-06-28 20:39:04,640 INFO sqlalchemy.engine.base.Engine CREATE SCHEMA system
2015-06-28 20:39:04,640 INFO sqlalchemy.engine.base.Engine {}
2015-06-28 20:39:04,641 INFO sqlalchemy.engine.base.Engine SET search_path TO
system
2015-06-28 20:39:04,641 INFO sqlalchemy.engine.base.Engine {}
2015-06-28 20:39:04,650 INFO sqlalchemy.engine.base.Engine select relname from
pg_class c join pg_namespace n on n.oid=c.relnamespace where
n.nspname=%(schema)s and relname=%(name)s
2015-06-28 20:39:04,650 INFO sqlalchemy.engine.base.Engine {'name':
u'locality', 'schema': u'system'}
2015-06-28 20:39:04,654 INFO sqlalchemy.engine.base.Engine
CREATE TABLE system.locality (
id SERIAL NOT NULL,
parent_id INTEGER,
name TEXT NOT NULL,
type INTEGER NOT NULL,
schema VARCHAR(63) NOT NULL,
PRIMARY KEY (id),
FOREIGN KEY(parent_id) REFERENCES system.locality (id),
UNIQUE (schema)
)
2015-06-28 20:39:04,654 INFO sqlalchemy.engine.base.Engine {}
2015-06-28 20:39:04,654 INFO sqlalchemy.engine.base.Engine ROLLBACK
2015-06-28 20:39:04,655 INFO sqlalchemy.engine.base.Engine ROLLBACK
Traceback (most recent call last):*
*...*
*...*
*...*
*sqlalchemy.exc.ProgrammingError: (psycopg2.ProgrammingError) schema "system"
does not exist*
--
You received this message because you are subscribed to the Google Groups
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.