0
リフレクションを使用して2つのクラスを生成しています。 1つはメッセージを表し、送信/受信エンティティ(企業または人)を保持するテーブルに対して2つの外部キーを持っています。Flask-SQLAlchemyとリフレクションとの関係
2つの外部キーを指定すると、対応する関係を作成する必要がありますが、これは簡単なはずですが、動作させることはできません。
私のコードは次のようになります。「SenderIDのは間違いなくの一つですので、私は、これを作るのかわからないんだけど
InvalidRequestError: When initializing mapper Mapper|FileData|FileData, expression
'SenderId' failed to locate a name ("name 'SenderId' is not defined"). If this is a
class name, consider adding this relationship() to the <class '__main__.FileData'>
class after both dependent classes have been defined.
:
class Entity(db.Model):
__tablename__ = 'Entity'
__table_args__ = {
'autoload': True,
'schema': 'msg',
'autoload_with': db.engine
}
class FileData(db.Model):
__tablename__ = 'FileData'
__table_args__ = {
'autoload': True,
'schema': 'msg',
'autoload_with': db.engine
}
sender = db.relationship('Entity', foreign_keys='SenderId')
receiver = db.relationship('Entity', foreign_keys='ReceiverId')
それは、次のメッセージで失敗テーブルの列を使用し、コードの他の部分でも問題なくアクセスできます。
FileDataとEntityの間に1対1の関係はありますか? – Cicero
シセロ、そうではありません。すべてのFileDataエントリには、エンティティテーブルからの1つの送信者と1つの受信者がありますが、各Entityテーブルエントリは多くのFileDataエントリの送信者または受信者になります。 – user3199144
さて、私はそれを理解しようとしていますが、苦労しています。しかし、私があなたに伝えることの1つは、あなたがforeign_keys定義で小文字を使用するべきであるということです。例: 'sender.id' /' receiver.id' – Cicero