有人可以解释这样做的正确方法:
class Bracket(Base):
__tablename__ = 'weekly_bracket'
bracket_1A_winner = Column( Integer, nullable = False )
bracket_1B_winner = Column( Integer, nullable = False )
bracket_2_winner = Column( Integer, nullable = False )
handle = Column( String(250),ForeignKey('user.site_handle') )
user_id = Column( Integer, ForeignKey('user.id'), primary_key = True )
user = relationship( User )
答案 0 :(得分:1)
关于多个外键,您可以在文档中查看Multiple Join Paths以获取更多信息。这将更详细地解释发生了什么。
对于您的直接关注,课程有一些问题。您将主键设置为外键。这可能不是你想要的。 class Bracket(Base):
__tablename__ = 'weekly_bracket'
id = Column ( Integer, primary_key = True )
bracket_1A_winner = Column( Integer, nullable = False )
bracket_1B_winner = Column( Integer, nullable = False )
bracket_2_winner = Column( Integer, nullable = False )
handle = Column( String(250),ForeignKey('user.site_handle') )
user_id = Column( Integer, ForeignKey('user.id') )
user = relationship( 'User', foreign_keys=[user_id] )
中的表名应该是User类的名称,作为字符串。您还可以在relationship()调用中指定外键。试试这个:
class Bracket(Base):
__tablename__ = 'weekly_bracket'
id = Column ( Integer, primary_key = True )
bracket_1A_winner = Column( Integer, nullable = False )
bracket_1B_winner = Column( Integer, nullable = False )
bracket_2_winner = Column( Integer, nullable = False )
handle = Column( String(250),ForeignKey('user.site_handle') )
bracket1_user_id = Column( Integer, ForeignKey('user.id') )
bracket2_user_id = Column( Integer, ForeignKey('user.id') )
bracket1_user = relationship( 'User', foreign_keys=[bracket1_user_id] )
bracket2_user = relationship( 'User', foreign_keys=[bracket2_user_id] )
在您的情况下,我在这里看不到您需要多个外键的位置。如果您有两个用户,有两个关系,这将导致多个外键。例如:
var c = $("myCanvas");
正如@ChristopherPearson所提到的,你不需要'id'字段充当primary_key(我删除了不正确的评论)。使用user_id作为主键是可以的,因为user_id字段也是唯一的。但是,如果您希望用户拥有多个括号,则该关系将无法长时间运行。