Hi all,

i have a legacy system which provides some special database views to provide
schema information for an application in a database independent way
(and with some quirks).

Now i need to port this to sqlalchemy and want to use it as one source of
schema information instead of the default SQLAlchemy reflection. That works 
fine,
i just added a derived Metadata class that does reflection via my legacy schema
information system.

BUT, as this is legacy stuff it misses out on some of the nicer features of 
SQLAlchemy
and modern databases like Foreign Keys, Constraints, Defaults and all that 
stuff.
The legacy app has some of that information available in various layers, so i 
need to
merge that info into my Metadata, e.g. to add ForeignKeys that are not modelled 
in the database
layer and all that legacy stuff.

So my basic approach was something like:

# get the table information from the legacy schema info system
meta = db.MyMeta.reflect(only=[...])

Now i have a bunch of Table objects inside the Metadata with my custom datatypes
correctly set and all that, but don't have any foreign key stuff yet.

Is there any good way to merge extra Constraints and Defaults and ForeignKeys 
into
an already defined Table object?

My naive approach failed:

 >>> fk = 
 >>> ForeignKeyConstraint(['initial_manager'],['angestellter.personalnummer'])
 >>> proj = Table('project',db.meta,fk)
Traceback (most recent call last):
   File "<stdin>", line 1, in <module>
   File 
"c:\sdk\win32\1.0\Python25\lib\site-packages\sqlalchemy-0.4.1-py2.5.egg\s
qlalchemy\schema.py", line 103, in __call__
     raise exceptions.ArgumentError("Table '%s' is already defined for this 
MetaD
ata instance." % key)
sqlalchemy.exceptions.ArgumentError: Table 'project' is already defined for this
  MetaData instance.

Michael

-- 
Michael Schlenker
Software Engineer

CONTACT Software GmbH           Tel.:   +49 (421) 20153-80
Wiener Straße 1-3               Fax:    +49 (421) 20153-41
28359 Bremen
http://www.contact.de/          E-Mail: [EMAIL PROTECTED]

Sitz der Gesellschaft: Bremen | Geschäftsführer: Karl Heinz Zachries
Eingetragen im Handelsregister des Amtsgerichts Bremen unter HRB 13215


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