[英]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.