请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

Drift pending=PendingStatus.Success 打印的SQL是where false = 1

图片描述

这里三行个断点的代码,第一个断点和第三个断点查询语句有问题,第一个是我自己加的逻辑,如果当前用户对同isbn的书籍有过请求书籍,则不能继续提交,在写这断代码的时候,发现不生效,所以通过断点,检查了一下生成的SQL语句
发现在使用pending的情况下,会变成xxxxx from drift where false = 1

图片描述

但是这里传进model里的base重写的query的filter_by方法时有值
图片描述
继续掉试下去发现到clauses的时候 pending这个值会消失
图片描述
我估计是这里有问题导致了where false = 1这个错误
但是我不知道这是什么原因到了这里pending会消失掉,在查询条件中,如果我把pending=枚举的条件完成去掉,则sql条件都可正常打印
下面是枚举的代码
图片描述
下面是去掉pending条件打印出的SQL语句
图片描述

视屏中的
success_receive_count = Drift.query.filter_by(requester_id=self.id, pending=PendingStatus.Success).count()也是同样的问题,查询条件是were false = 1.查询出来是0,所以代码不影响执行,不调看不出来

不知道问题出在什么地方,请老师指教

正在回答 回答被采纳积分+3

3回答

ToFuir 2021-04-22 11:41:33

我也是这个问题,请问问题解决了吗

0 回复 有任何疑惑可以回复我~
提问者 李大侠1984 2019-01-23 17:20:31

这是Drift的model类


class Drift(Base):


   id = Column(Integer, primary_key=True)

   # 邮寄信息
   recipient_name = Column(String(20), nullable=False)
   address = Column(String(100), nullable=False)
   message = Column(String(200))
   mobile = Column(String(20), nullable=False)

   # 书籍信息
   isbn = Column(String(13))
   book_title = Column(String(50))
   book_author = Column(String(30))
   book_img = Column(String(50))

   # 请求者信息
   requester_id = Column(Integer)
   requester_nickname = Column(String(20))

   # 赠送者信息
   gifter_id = Column(Integer)
   gift_id = Column(Integer)
   gifter_nickname = Column(String(20))

   _pending = Column('pending', SmallInteger, default=1)

   @property
   def pending(self):
       return PendingStatus(self._pending)

   @pending.setter
   def pending(self, status):
       self._pending = status.value

0 回复 有任何疑惑可以回复我~
提问者 李大侠1984 2019-01-23 16:13:34

我直接传入pending=1也会是false = 1

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信