私はPythonアプリケーションでSQLAlchemyを使用しようとしていますが、多対多の関係に問題があります。 私は4つのテーブルを有する:SqlAlchemyとの結合条件のエラー
ユーザー、フラグ、commandes、チャネル、および
commandes_channels_flags各関係テーブル(commandes、チャネルおよびフラグ)
ユーザの外部キーを含むcommandes_channels_flags flag_idなどを有しています外部キーも。
私はコマンド、チャンネル、フラグをリンクしようとします。目的は、コマンドがフラグのためにチャネル上で実行できることを知ることです。
私はこれでした:
from sqlalchemy import Column, Integer, String, ForeignKey
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import relationship
Base = declarative_base()
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
pseudo = Column(String(50), unique=True, nullable=False)
flag_id = Column(ForeignKey('flags.id'))
class Flag(Base):
__tablename__ = 'flags'
id = Column(Integer, primary_key=True)
irc_flag = Column(Integer)
nom = Column(String(50))
users = relationship("User", backref="flag", order_by="Flag.irc_flag")
commande = relationship("Commande", secondary="commandes_channels_flags", back_populates="flags")
channel = relationship("Channel", secondary="commandes_channels_flags", back_populates="flags")
class Channel(Base):
__tablename__ = 'channels'
id = Column(Integer, primary_key=True)
uri = Column(String(50))
topic = Column(String(255))
commande = relationship("Commande", secondary="commandes_channels_flags", back_populates="channels")
flag = relationship("Flag", secondary="commandes_channels_flags", back_populates="channels")
class Commande(Base):
__tablename__ = 'commandes'
id = Column(Integer, primary_key=True)
pattern = Column(String(50))
channel = relationship("Channel", secondary="commandes_channels_flags", back_populates="commandes")
flag = relationship("Flag", secondary="commandes_channels_flags", back_populates="commandes")
class CommandeChannelFlag(Base):
__tablename__ = 'commandes_channels_flags'
id = Column(Integer, primary_key=True)
commande_id = Column(ForeignKey('commandes.id'))
channel_id = Column(ForeignKey('channels.id'))
flag_id = Column(ForeignKey('flags.id'))
をしかし、私はこのエラーを持っている:
sqlalchemy.exc.InvalidRequestError: Mapper 'Mapper|Commande|commandes' has no property 'channels'
私はリンク私のテーブルに誤りがあることを理解し、私はそれを見つけることができません。
'channel_id = Column(ForeignKey( 'chanels.id'))' – xli
ああ、変更しましたが別のエラーがあります(メッセージ編集済み) – Tartempion34