> send along a test case that includes whatever ForeignKey references to/
> from ObjectType might be involved here.    My initial guess might be  
> to lose the "constraints.copy()" section since each Column.copy() will  
> contain a copied ForeignKey inside of it.  copy() has only been used  
> by the to_metadata() method up til this point.

Sorry for not replying for a month.
I'm trying to produce a test case using simple tables. I use two
MetaDatas but what I get is

sqlalchemy.exceptions.NoReferencedTableError: Could not find table 'A'
with which to generate a foreign key

In production code I use foreign keys between tables in different
metadatas (I use one MetaData per "component"). Is it ok and should
work?

Here is the complete code:

#!/usr/bin/python

from sqlalchemy import Table, Column, Integer, Text, MetaData,
ForeignKey, Date, DateTime, Float
from sqlalchemy.engine import create_engine
from sqlalchemy.orm import mapper, relation, backref

engine = create_engine('sqlite://')

metadata_1 = MetaData()
metadata_2 = MetaData()

def _cloneToSND(table, metadata):
    return Table('SND_' + table.name, metadata,
            *([c.copy() for c in table.columns] + \
              [c.copy() for c in table.constraints]))

tableA = Table('A', metadata_1,
        Column('id', Integer, primary_key=True))

tableB = Table('B', metadata_1,
        Column('id', Integer, primary_key=True),
        Column('a_id', Integer, ForeignKey(tableA.c.id),
nullable=True, index=True))

tableC = Table('C', metadata_2,
        Column('id', Integer, primary_key=True),
        Column('a_id', Integer, ForeignKey(tableA.c.id),
nullable=True, index=True))
        #Column('b_id', Integer, ForeignKey(tableB.c.id),
nullable=True, index=True))

tableSND_A = _cloneToSND(tableA, metadata_1)
tableSND_B = _cloneToSND(tableB, metadata_1)
tableSND_C = _cloneToSND(tableC, metadata_2)

if __name__ == '__main__':
    metadata_1.create_all(bind=engine)
    metadata_2.create_all(bind=engine)

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