首页 > 解决方案 > 如何使用子查询来设置或更新 SQLALchemy 中的值?

问题描述

以下查询将存在于 Python 函数中,并使用 player_name、year_born、player_status 和它正在更新的玩家 ID 的参数调用。是否可以使用 SQLAlchemy ORM 生成此查询?

UPDATE player 
SET father_id = (
    SELECT id
    FROM player
    WHERE player_name = 'Player A'
    AND year_born = 1980
    AND player_status = 'Retired' ) 
WHERE id = 192734

我发现一些资源表明您需要创建一个子查询,我在下面做了...

    player_id = db.session.query(Player.id).filter(
         Player.player_name == 'Player A',
         Player.year_born == 1980,
         Player.player_status == 'Retired').subquery()

但我不确定如何生成其余的查询。我想做的是...

    q = db.session.query(Player).filter(Player.id == 192734).update(
    {Player.father_id: subquery.c.id})

...但这会产生以下错误:sqlalchemy.exc.ProgrammingError: (psycopg2.errors.UndefinedTable) missing FROM-clause entry for table "anon_1"

我相信这对于有经验的人来说很容易......谢谢!

标签: pythonpostgresqlsqlalchemy

解决方案


推荐阅读