Flask-SQLAlchemy チュートリアルに従っています。Python 2.6でFlask 0.9、sqlalchemy 0.7.8、flask-sqlalchemy 0.16を使用しています。
チュートリアルのように、「1対多」の関係を作成しようとしています。
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つの異なるモジュール間に関係が存在する必要がありますが、私の質問が理解しやすくなるように単純化します.)
私は2つのモジュールを持っています:PersonとAddress、両方とも:
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///C:\\MyBase\\Base.sqlite'
db = SQLAlchemy(app)
それぞれに、前に書かれたクラスの宣言があります。
私の主な機能は3番目のモジュールにあります:
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' に関連付けられた外部キーは、ターゲット列 'sid' への外部キーを生成するテーブル 'person' を見つけることができませんでした*
「メタデータ」の使用を提案している別の投稿を見つけることができましたが、それを使用する適切な方法が見つかりませんでした。
これを解決するアイデアはありますか?
ありがとう !