为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 SQLAlchemy 遍历关系表?

如何使用 SQLAlchemy 遍历关系表?

GCT1015 2022-12-20 16:18:09
我正在学习 Flask,我想创建一个数据库,其中包含 3 个相互关联的表:公司:有关我工作的公司的信息(编造:))工作:关于我在每家公司担任的角色的信息任务:有关我在每家公司的每份工作中的任务的信息。这是代码:from flask import Flask, render_templatefrom flask_sqlalchemy import SQLAlchemyfrom datetime import datetimeapp = Flask(__name__)app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///work_experience.db'db = SQLAlchemy(app)class Company(db.Model):    id   = db.Column(db.Integer, primary_key=True)    name = db.Column(db.String(100), nullable=False)    start_date = db.Column(db.DateTime, nullable=False)    end_date   =  db.Column(db.DateTime, nullable=False, default=None)    location   = db.Column(db.String(20), nullable=False, default='N/A')    jobs = db.relationship('Job', backref='company_')class Job(db.Model):    id   = db.Column(db.Integer, primary_key=True)    position = db.Column(db.String(100), nullable=False)    start_date = db.Column(db.DateTime, nullable=False)    end_date   =  db.Column(db.DateTime, nullable=False)    company_id = db.Column(db.Integer, db.ForeignKey('company.id'))    tasks = db.relationship('Task', backref='job_')class Task(db.Model):    id   = db.Column(db.Integer, primary_key=True)    description = db.Column(db.String(100), nullable=False)    start_date = db.Column(db.DateTime, nullable=False)    end_date   =  db.Column(db.DateTime, nullable=False)    job_id = db.Column(db.Integer, db.ForeignKey('job.id'))db.create_all()我的想法是有一个 for 循环(最终我将用 Jinja2 编写,但现在 python 代码很好),这样我就可以为每个公司打印我的工作和我完成的任务。当然,我可以将所有数据都放在一张表中,但我正在努力学习。因此输出应该是这样的:for company in Companies:    for job in Jobs:        for Task in Tasks:            print(company, job, task)你能建议我一个聪明而优雅的方式来实现我的目标吗?提前致谢。
查看完整描述

1 回答

?
qq_遁去的一_1

TA贡献1725条经验 获得超7个赞

如果我理解正确的话,您需要一份包含所有公司、工作和任务的列表。你可以通过查询你的数据库来获得这些(假设你已经插入了一些元组):


for c in Company.query.all():

    print(c.name)

    for r in c.roles:

        print('\t',r.position)

        for t in r.tasks:

            print('\t\t',t.description)


查看完整回答
反对 回复 2022-12-20
  • 1 回答
  • 0 关注
  • 54 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信