2014-09-16 4 views
0

Как определить внешний ключ между таблицами в примере ниже? Они имеют одинаково названный столбец, но в настоящее время я не могу подключиться.Определить внешний ключ в существующей таблице

from sqlalchemy.ext.declarative import declarative_base 
from sqlalchemy import create_engine 
from sqlalchemy.orm import sessionmaker 
from sqlalchemy import Table, Column, Integer, String 

engine = create_engine('my connection details', echo=False) 
Session = sessionmaker(bind=engine) 
session = Session() 
Base = declarative_base() 

my_table = Table('my_table', 
    Base.metadata, 
    autoload=True, 
    autoload_with=engine, 
    schema='my_schema') 

other_table = Table('other_table', 
    Base.metadata, 
    autoload=True, 
    autoload_with=engine, 
    schema='other_schema') 

class MyClass(Base): 
    __table__ = my_table 

class OtherClass(Base): 
    __table__ = other_table 

ответ

1

Я считаю, что ForeignKey s должно быть автоматически отражается sqlalchemy. Возможно, тот факт, что у вас есть два разных schema, является причиной того, что он не работает в вашем случае.

В любом случае, в соответствии с Overriding Reflected Columns, вы должны быть в состоянии сделать что-то вроде:

my_table = Table('my_table', Base.metadata, 
    Column("my_id", Integer, ForeignKey("[other_schema].other_table.my_id")), 
    autoload=True, autoload_with=engine, schema='my_schema') 
Смежные вопросы