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 [email protected]
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
-~----------~----~----~----~------~----~------~--~---