0
私は一対多の関係を設定しようとしている2つのテーブルを持っています。 Sessions
が複数ある単一のPlayer
が必要です。私はSQLAlchemyの関係の問題 - マッパーが名前の検索に失敗する
Player
の外のダウン
relationship
行を削除し、
Player
と
Session
の順序を切り替えてみた
sqlalchemy.exc.InvalidRequestError: One or more mappers failed to initialize -
can't proceed with initialization of other mappers. Triggering mapper:
'Mapper|Player|player'. Original exception was: When initializing mapper
Mapper|Player|player, expression 'Session' failed to locate a name ("name
'Session' is not defined"). If this is a class name, consider adding this
relationship() to the <class 'analysis_db_tables.Player'> class after both
dependent classes have been defined.
import sqlalchemy as sql
from sqlalchemy.orm import relationship
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class Session(Base):
__tablename__ = 'session'
id = sql.Column('session_id', sql.INTEGER, primary_key=True)
player_id = sql.Column(sql.INTEGER, sql.ForeignKey('player.player_id'))
class Player(Base):
__tablename__ = 'player'
id = sql.Column('player_id', sql.INTEGER, primary_key=True)
sessions = relationship('Session', backref='player')
しかし、私は、データベースを作成する際に取得しておくエラーがあります
Player.sessions = relationship('Session', backref='player')
と、back_populates
とrelationship
の両方を使用してみましたクラス。私はここで間違って何をしていますか?
この問題はデータベースコードの作成中に一見無作為にポップアップしていましたが、問題を再現しながらテーブルをこの2つにペアにしました。私はpostgresでSQLAlchemyを使用しています。ありがとう。
メイキングだけ変更するには、次のエラーがスローされます'session'テーブル: 'player'テーブルに 'id'という名前のカラムがありません – ketone
あなたのカラムに "product_id"という名前が含まれています。私は別の可能な問題に私の答えを変更しました。 – mul
ありがとうございます。でも、そうではありません。私は 'from sqlalchemy.orm import relationship'から直接関係を取得しています – ketone