使用SQLAlchemy创建外键

时间:2015-08-04 22:33:08

标签: sql sqlalchemy flask-sqlalchemy

我在网上寻找答案并遵循SQLAlchemy文档,但我不明白。

我有以下代码(我正在使用带有SQLAlchemy的Flask):

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 个答案:

答案 0 :(得分:0)

您似乎没有建立关系。我在您的设置中更改了一些定义,通常可以帮助我消除表名与模型(类名)和字段名的歧义。以下代码应该适合您。不要忘记导入: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更多信息。