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 !