gpt4 book ai didi

python - Flask SQLAlchemy 外键关系

转载 作者:太空狗 更新时间:2023-10-29 20:44:44 33 4
gpt4 key购买 nike

我很难理解 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() 时出现以下错误

Could not initialize target column for ForeignKey 'request.agent' on table 'applicant': table 'request' has no column named 'agent'

最佳答案

看看 SqlAlchemy documentation on OneToOne relationships .首先,您需要为每个模型提供一个 Primary Key。然后你需要定义一个Foreign Key,它引用另一个模型的Primary Key。现在,您可以定义与允许直接访问相关模型的反向引用的关系。

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 = db.Column(db.Integer, db.ForeignKey('request.id'))
request = db.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)

关于python - Flask SQLAlchemy 外键关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41569206/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com