Balão Sqlalchemy: relações entre diferentes módulos

Estou seguindo o tutorial Flask-SQLAlchemy. Eu tenho o Flask 0.9, sqlalchemy 0.7.8 e flask-sqlalchemy 0.16 no python 2.6.

Estou tentando criar um relacionamento "um para muitos", como em seu tutorial.

class Person(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(50))
    addresses = db.relationship('Address', backref='person',
                                lazy='dynamic')

class Address(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    email = db.Column(db.String(50))
    person_id = db.Column(db.Integer, db.ForeignKey('person.id'))

Depois disso, posso criar o banco de dados:

from DataBase.Tables.MyClass import db
db.create_all()

Funciona bem quando as duas classes são criadas no mesmo arquivo.

Não funciona mais quando quero criar isso através de 2 arquivos diferentes (2 módulos diferentes).

Este é apenas umexemplo (Estou tentando fazer algo muito mais complicado com muitas classes e preciso que o relacionamento exista entre dois módulos diferentes, mas vou simplificá-lo para que minha pergunta seja mais fácil de entender.)

Eu tenho 2 módulos: pessoa e endereço, ambos têm:

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///C:\\MyBase\\Base.sqlite'
db = SQLAlchemy(app)

e cada um deles tem a declaração da classe escrita antes.

Minha principal função está em um terceiro módulo:

from DataBase.Tables.Person import db as person_db
from DataBase.Tables.Address import db as address_db

if __name__ == "__main__":
    import DataBase.Tables.Person
    import DataBase.Tables.Address
    person_db.create_all()
    address_db.create_all()

Eu ainda recebo um erro no Eclipse:

* sqlalchemy.exc.NoReferencedTableError: A chave estrangeira associada à coluna 'Address.person_id' não pôde encontrar a tabela 'person' com a qual gerar uma chave estrangeira para segmentar a coluna 'sid' *

Eu poderia encontrar outro post com alguém sugerindo o uso de "metadados", mas não consegui encontrar uma maneira correta de usar isso.

Alguém tem uma ideia para resolver isso?

Obrigado !

questionAnswers(1)

yourAnswerToTheQuestion