Drift pending=PendingStatus.Success 打印的SQL是where false = 1
来源:12-14 鱼漂条件检测

李大侠1984
2019-01-23
这里三行个断点的代码,第一个断点和第三个断点查询语句有问题,第一个是我自己加的逻辑,如果当前用户对同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回答
-
ToFuir
2021-04-22
我也是这个问题,请问问题解决了吗
00 -
李大侠1984
提问者
2019-01-23
这是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.value00 -
李大侠1984
提问者
2019-01-23
我直接传入pending=1也会是false = 1
00
相似问题