首页 > 解决方案 > SQLAlchemy:使用 in_ 运算符一次删除多条记录

问题描述

我有一张有数千行的表。我想使用 in 子句删除多行。

SQL 服务器代码:

DELETE tbl_Jenny_ACW_AG2_AGENT_DAY_Genesys_Stage
WHERE Avaya_Id IN ('','',''....'')

我正在尝试使用 SQLAlchemy 执行上述操作,

qry = (session.query(
                tbl_Jenny_ACW_AG2_AGENT_DAY_Genesys_Stage.c.Avaya_Id,
                func.count(),
                )
        .group_by(
                tbl_Jenny_ACW_AG2_AGENT_DAY_Genesys_Stage.c.Avaya_Id,
                )
        # comment this line out to see all the groups
        .having(func.count()>1)
      )

dlt_dup = tbl_Jenny_ACW_AG2_AGENT_DAY_Genesys_Stage.delete().where(tbl_Jenny_ACW_AG2_AGENT_DAY_Genesys_Stage.c.Avaya_Id.in_(qry))

session.execute(dlt_dup)

上面的代码将查询结果并执行查询。但是,我无法删除重复记录,我得到的错误是 [参数:(1,)]

标签: pythonsql-serverpandassqlalchemyflask-sqlalchemy

解决方案


qry = db.session.query(Tablename.ColumnName, func.count()).filter(condition=value).group_by(Tablename.ColumnName).all().

db.session.delete(qry)

推荐阅读