使用 SQLAlchemy 创建外键

Creating a foreign key with SQLAlchemy

我在网上寻找答案并遵循了 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)

我希望问题 table 中的 accountID 与帐户 table 中的 id 列相关联。虽然我不知道我是怎么读的,读了什么,但我不明白。谢谢

你好像还没有建立关系。我在您的设置中更改了一些定义,这些定义通常可以帮助我消除 table 名称与模型(class 名称)与字段名称的歧义。以下代码应该适合您。不要忘记导入: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 中有更多内容。