代码之家  ›  专栏  ›  技术社区  ›  Pav Sidhu dragster

使用SQLAlchemy创建外键

  •  1
  • Pav Sidhu dragster  · 技术社区  · 11 年前

    我在网上查找了答案,并关注了SQLAlchemy文档,但我不理解它。

    我有以下代码(我使用Flask和SQLAlchemy):

    class accounts(db.Model):
    
        __tablename__ = 'accounts'
    
        id = db.Column(db.Integer, primary_key=True)
        name = db.Column(db.String(100), nullable=False)
    
    
    class questions(db.Model):
    
        __tablename__ = 'questions'
    
        id = db.Column(db.Integer, primary_key=True)
        accountID = db.Column(db.Integer, db.ForeignKey('accounts.id'))
        question = db.Column(db.String(500), nullable=False)
    

    我想要 accountID 在要与 id 列。虽然我不知道怎么读,也不知道读了什么,但我不明白。谢谢

    1 回复  |  直到 11 年前
        1
  •  2
  •   GG_Python    11 年前

    你似乎没有建立起关系。我在您的设置中更改了一些定义,这通常有助于消除表名与模型(类名)与字段名之间的歧义。以下代码应该适用于您。不要忘记导入: from sqlalchemy.orm import relationship .

    class Account(db.Model):
        __tablename__ = 'accounts'
        id = db.Column(db.Integer, primary_key=True)
        name = db.Column(db.String(100), nullable=False)
        questions = relationship("Question", backref="accounts")
    
    class Question(Base):
        __tablename__ = 'questions'
        id = db.Column(db.Integer, primary_key=True)
        account_id = db.Column(db.Integer, db.ForeignKey('accounts.id'))
        body = db.Column(db.String(500), nullable=False)
    

    上述设置还允许您获取与帐户相关的所有问题(使用 Account.questions ).

    更多信息 SQL Alchemy docs 关于这个主题。