look into buildng your metadata first with no schema, then copying it to
the MSSQL schema using tometadata(m, schema='myschema').  the schema name
change should be propagated into foreign keys.   unfortunately it doesn't
seem to support un-setting the schema name at the moment so that's why the
reverse direction.

markscottwright wrote:
>
> I'm trying to use SQLAlchemy to move a database from SQLServer to
> SQLite (so I can play with it at home on my linux box).  I've gotten
> surprisingly far - I'm very impressed with SQLAlchemy!  But I'm facing
> a problem with MS Sql's 'schema names' - which other dbs refer to a
> 'owners', I think.  Sadly, sqlite doesn't support creating a table
> called 'dbo.abc'.
>
> My code so far looks like this:
>
> src_db = SqlSoup('mssql://blah blah blah')
> src_db.schema = 'dbo'
>
> # dest
> dest_engine = sqlalchemy.create_engine("sqlite:///dest.db", echo=True)
> dest_md = sqlalchemy.MetaData(bind=dest_engine)
>
> table_names = ['xxx', ...]
> for table_name in table_names:
>     src_table = getattr(src_db, table_name)
>     dest_table = src_table._table.tometadata(dest_md)
>     dest_table.schema = None
>     dest_table.create()
>
> This works, until you hit a table for foreign keys.  The schema name
> is part of the foreign key name, but sqlite can't deal with them, and
> I get errors that look like this:
> C:\tools\Python25\lib\site-packages\sqlalchemy\schema.pyc in
> _init_existing(self, *args, **kwargs)
>     252             raise exc.ArgumentError(
>     253                 "Can't change schema of existing table from
> '%s' to '%s'",
> --> 254                 (self.schema, schema))
>     255
>     256         include_columns = kwargs.pop('include_columns', None)
>
> ArgumentError: ("Can't change schema of existing table from '%s' to
> '%s'", (None, u'dbo'))
>
> Sadly, I can't just do a 'dest_table.foreign_keys.clear()' before
> calling create() - it doesn't seem to do anything.
>
> >
>


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