sqlalchemy 去重 只保留非重复数据

317 篇文章 3 订阅
~Stock_rpa_mm373.location.in_(location_list),
这个符号代表非
def delete_duplicate_location_mm373():
    # 删除重复的 LH807 location 仓码,因为 LH mb52 仓码的描述信息需要在 mm373 中获取
    location_list = session.query(Stock_rpa_mm373.location).filter(Stock_rpa_mm373.code=='SG17').distinct().all()
    location_list = [x[0] for x in location_list]
    print('code list',len(location_list), location_list)

    # location_list = session.query(Stock_rpa_mb52.sloc).filter(Stock_rpa_mb52.code == 'LH807').distinct().all()
    # print('code list', len(location_list), location_list)
    delete_list = session.query(Stock_rpa_mm373).filter(
        or_(
        ~Stock_rpa_mm373.location.in_(location_list),
            Stock_rpa_mm373.code != 'SG17'

        )).delete(synchronize_session=False)
    print('len delete list', delete_list)
    duplicates = session.query(Stock_rpa_mm373.location, func.count(Stock_rpa_mm373.location)).group_by(Stock_rpa_mm373.location).having(
        func.count(Stock_rpa_mm373.location) > 1).all()
    print(len(duplicates))
    print(duplicates)
    for duplicate in duplicates:
        name = duplicate[0]
        # 根据需要构建删除条件
        duplicate_records = session.query(Stock_rpa_mm373).filter(Stock_rpa_mm373.location == name).all()

        # 删除重复数据
        for record in duplicate_records[1:]:
            session.delete(record)

    #.delete(synchronize_session=False)
    # # 提交事务
    session.commit()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值