我正在关注 Flask-SQLAlchemy 教程。我在 python 2.6 上有 Flask 0.9、sqlalchemy 0.7.8 和 flask-sqlalchemy 0.16。
我正在尝试创建“一对多”关系,就像他们的教程中一样。
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'))
之后,我可以创建数据库:
from DataBase.Tables.MyClass import db
db.create_all()
当两个类都在同一个文件上创建时,它工作得很好。
当我想通过 2 个不同的文件(2 个不同的模块)创建它时,它不再起作用。
这只是一个例子(我正在尝试用大量的类做一些更复杂的事情,我需要两个不同的模块之间存在关系,但我会简化它,以便我的问题更容易理解。)
我有 2 个模块:人员和地址,它们都有:
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///C:\\MyBase\\Base.sqlite'
db = SQLAlchemy(app)
他们每个人都有之前写的类的声明。
我的主要功能在第三个模块中:
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()
我仍然在 Eclipse 中遇到错误:
*sqlalchemy.exc.NoReferencedTableError:与列'Address.person_id'关联的外键找不到表'person',用于生成目标列'sid'的外键*
我可以找到另一个帖子,有人建议使用“元数据”,但我找不到合适的方法来使用它。
有没有人有解决这个问题的想法?
谢谢 !