亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 flask_sqlalchemy 的多對多查詢

使用 flask_sqlalchemy 的多對多查詢

弒天下 2022-07-12 10:15:04
我在一個基于 SQLAlchemy 的應用程序中得到了這個模型class Task(db.Model):    id = db.Column(db.Integer, primary_key=True)    name = db.Column(db.String(512))    status = db.Column(db.Enum(Status))class User(db.Model):    id = db.Column(db.Integer, primary_key=True)    name = db.Column(db.String(512))    user_tasks = db.relationship('Task',                                 secondary=user_tasks, lazy='subquery',                                 backref=db.backref('users', lazy=True)                                )user_tasks = db.Table('user_tasks',    db.Column('task_id', db.Integer, db.ForeignKey('task.id'), primary_key=True),    db.Column('user_id', db.Integer, db.ForeignKey('user.id'), primary_key=True),    db.Column('value', db.Integer))我想加入 3 個表(使用flask_sqlalchemy而不是原始查詢)相當于:db.session.execute(                    'SELECT u.id, u.name, ut.value\                     FROM user u\                     JOIN user_tasks ut\                     ON u.id = ut.user_id\                     AND ut.task_id = :task_id\                     JOIN task t\                     ON t.id = ut.task_id',                     {'task_id': task_id}                   )提前致謝
查看完整描述

1 回答

?
心有法竹

TA貢獻1866條經驗 獲得超5個贊

下面是一個經過測試的例子。

請注意,由于這些表的連接方式不同,您需要顯式指定連接,如下例所示,以便 SQLAlchemy 執行查詢。


db.session.query(User.id,User.name,user_tasks.c.value).\ 

    join(user_tasks,user_tasks.c.user_id==User.id).\ 

    filter(user_tasks.task_id==task_id).\

    join(Task,Task.id==user_tasks.c.task_id).all()


查看完整回答
反對 回復 2022-07-12
  • 1 回答
  • 0 關注
  • 210 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號