SQLALCHEMY 中查询一直返回空的问题

本文记录了一个关于SQLAlchemy在Python中进行查询时遇到的问题,即查询条件变为`WHERE 0 = 1`,导致始终返回空结果。经过排查,问题出在对`last_answer_time`字段的赋值操作,使得SQLAlchemy无法正确识别字段。解决方案是避免对数据库Column对象直接赋值,确保所有过滤条件引用的是有效的数据库列。
摘要由CSDN通过智能技术生成

问题描述

HabitQuestion表有个last_answer_time字段,默认是null,就是要做它的筛选过滤。
一开始使用代码如下:

base_query = base_query.filter(HabitQuestion.last_answer_time.isnot(None)).order_by(HabitQuestion.last_answer_time.desc()))

其中last_answer_time是个默认值是None的参数,运行测试用例的时候报错,说 isnot方法在datetime.datetime里面没找到。可这完全是参考官方文档写的代码。于是改成如下代码,可以运行了。

base_query = base_query.filter(HabitQuestion.last_answer_time != None).order_by(desc(text("last_answer_time")))

但有意思的是,2个测试用例代码,1个测试用例中last_answer_time字段全设置为None,另一个测试用例中last_answer_time字段全设置为有效值,单独运行的时候,都pass了,当合在一起运行的时候,出错,返回什么也没有查到!(每个测试用例都会在执行前做清空数据库的操作,所以

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值