SQLAlchemy错误集-删除符合多个条件的数据

······我去,用SQLAlchemy操作数据库,时不时就会出现bug,为了减少bug,从现在开始,以后出现bug就找出原因把代码贴出来,汗·····

以下代码是要实现删除符合多个条件的数据(已验证)

    def delete_service(self, service_id, service_type, user_name):
        #row = self.get_service(service_id, service_type, user_name)

        try:
            session = self.GetDBSession()
            session.query(UserServices).filter(and_(UserServices.service_id == service_id,
                                                    UserServices.service_type == service_type,
                                                    UserServices.user_name == user_name)).delete()
            self.DBSessionClose(commit=True)
            return True
        except Exception as e:
            print(e)
            return False

以下是原bug代码,这段代码会匹配到多个数据,一删除就会删除多条,但以前用这个单个条件删除却没问题,想了半天,还没发现原因,现在时间有点紧,后头有时间找出原因再来更新。。。。同时欢迎各位大佬指点一二····汗,溜了。。。。。。

    def get_service(self, service_id, service_type, user_name):

        try:
            session = self.GetDBSession()  # 连接数据库,开启会话(连接过程已封装)
            service = session.query(UserServices).filter(and_(UserServices.service_id == service_id,
                                                         UserServices.service_type == service_type,
                                                         UserServices.user_name == user_name)).first()  # 返回服务
            self.DBSessionClose()
            return service
        except Exception as e:
            print(e)

    def delete_service(self, service_id, service_type, user_name):
        row = self.get_service(service_id, service_type, user_name)
        try:
            session = self.GetDBSession()
            session.delete(row)
            self.DBSessionClose(commit=True)  # 提交更改,并关闭连接
            return True
        except Exception as e:
            print(e)
            return False

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值