使用 SQLAlchemy join 返回单个结果集

问题描述 投票:0回答:1

在我的 Flask 应用程序中,我想创建一个联接查询并使用 SQLAlchemy 返回单个(平面)结果集。

简单来说,我在

models.py
文件中创建了两个表:

class User(db.Model):
    __tablename__ = 'user'

    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    first_name = db.Column(db.String(120), nullable=False)
    last_name = db.Column(db.String(120), nullable=False)
    department_id = db.Column(db.Integer)
    date_added = db.Column(db.DateTime(timezone=True))

class Department(db.Model):
    __tablename__ = 'department'

    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    name = db.Column(db.String(120), nullable=False)
    date_added = db.Column(db.DateTime(timezone=True))

在我的应用程序中,我创建以下查询:

from app import app, db
from app.models import User, Department
...
@app.route("/index")
def index():
    results = db.session.query(User, Department).join(Department, Department.id == User.department_id, isouter=True)

结果以包含 2 个对象的元组形式返回:

(<User>, <Department>)

(如果我要加入另外 1 个对象,例如 Company,结果将以 3 个元组返回

(<User>, <Department>, <Company>)
。)

有什么方法可以在不使用元组的情况下以单个对象返回结果:

('user_id1', 'first_name1', 'last_name1', 'department_name1'), ('user_id2', 'first_name2', 'last_name2', 'department_name2')

python sqlalchemy flask-sqlalchemy
1个回答
0
投票

看来解决办法很简单。

我修改了查询以专门选择所需字段而不是整个对象:

db.session.query(User.id, User.first_name, User.last_name,  Department.name).join(Department, Department.id == User.department_id, isouter=True)
© www.soinside.com 2019 - 2024. All rights reserved.