簡體   English   中英

Flask SQLAlchemy 外鍵關系

[英]Flask SQLAlchemy Foreign Key Relationships

我在處理 SQLAlchemy 中的外鍵和關系時遇到了很多麻煩。 我的數據庫中有兩個表。 第一個是Request ,第二個是Agent 每個Request包含一個Agent ,每個Agent有一個Request

class Request(db.Model):
    __tablename__ = 'request'
    reference = db.Column(db.String(10), primary_key=True)
    applicationdate = db.Column(db.DateTime)
    agent = db.ForeignKey('request.agent'),

class Agent(db.Model):
    __tablename__ = 'agent'
    id =     db.relationship('Agent', backref='request', \
    lazy='select')
    name = db.Column(db.String(80))
    company = db.Column(db.String(80))
    address = db.Column(db.String(180))

當我運行db.create_all()出現以下錯誤

無法為表 'applicant' 上的 ForeignKey 'request.agent' 初始化目標列:表 'request' 沒有名為 'agent' 的列

查看有關 OneToOne 關系SqlAlchemy 文檔 首先,您需要為每個模型提供一個主鍵。 然后你需要定義一個外鍵,它引用另一個模型的主鍵。 現在,您可以使用允許直接訪問相關模型的 backref 定義關系。

class Request(db.Model):
    __tablename__ = 'request'
    id = db.Column(db.Integer, primary_key=True)
    applicationdate = db.Column(db.DateTime)

class Agent(db.Model):
    __tablename__ = 'agent'
    id = db.Column(db.Integer, primary_key=True)   
    request_id = Column(Integer, ForeignKey('request.id'))
    request = relationship("Request", backref=backref("request", uselist=False))

    name = db.Column(db.String(80))
    company = db.Column(db.String(80))
    address = db.Column(db.String(180))

現在你可以像這樣訪問你的模型:

request = Request.query.first()
print(request.agent.name)

agent = Agent.query.first()
print(agent.request.applicationdate)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM