Flask Sqlalchemy: relacje między różnymi modułami
Podążam za samouczkiem Flask-SQLAlchemy. Mam Flask 0.9, sqlalchemy 0.7.8 i flask-sqlalchemy 0.16 na pythonie 2.6.
Próbuję stworzyć relację „jeden do wielu”, tak jak w ich tutorialu.
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'))
Po tym mogę utworzyć bazę danych:
from DataBase.Tables.MyClass import db
db.create_all()
Działa dobrze, gdy obie klasy są tworzone w tym samym pliku.
Nie działa już, gdy chcę to utworzyć za pomocą 2 różnych plików (2 różne moduły).
To jest tylkoprzykład (Próbuję zrobić coś znacznie bardziej skomplikowanego z dużą ilością klas i potrzebuję relacji między dwoma różnymi modułami, ale uprościłem to, aby moje pytanie było łatwiejsze do zrozumienia).
Mam 2 moduły: Osoba i adres, obie mają:
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///C:\\MyBase\\Base.sqlite'
db = SQLAlchemy(app)
a każdy z nich ma deklarację wcześniej napisanej klasy.
Moją główną funkcją jest trzeci moduł:
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()
Nadal pojawia się błąd w Eclipse:
* sqlalchemy.exc.NoReferencedTableError: Klucz obcy powiązany z kolumną „Adres.person_id” nie mógł znaleźć tabeli „osoba”, za pomocą której można wygenerować klucz obcy do kolumny docelowej „sid” *
Mogłem znaleźć inny post z kimś sugerującym użycie „metadanych”, ale nie mogłem znaleźć odpowiedniego sposobu na jego użycie.
Czy ktoś ma pomysł, aby to rozwiązać?
Dzięki !