文章内容

2021/10/19 17:11:19,作 者: 黄兵

SQLAlchemy filter None

在使用 SQLAlchemy 查询值为 NULL 的时候,写法如下:

# 不存在 city_id
get_ip_info = IPPublicAddressInfo.query.filter_by(ip_crawler_country_id=get_country_id) \
.filter_by(ip_crawler_region_id=get_region_id) \
.filter(IPPublicAddressInfo.ip_crawler_city_id == None).first()

但是这样写编辑器出现提示:

Comparison with None performed with equality operators 

如果按照提示,编辑器会将代码修改为如下:

# 不存在 city_id
get_ip_info = IPPublicAddressInfo.query.filter_by(ip_crawler_country_id=get_country_id) \
.filter_by(ip_crawler_region_id=get_region_id) \
.filter(IPPublicAddressInfo.ip_crawler_city_id is None).first()

这样查询不会达到预期的结果。

之后使用 SQLAlchemy is_() 经行查询(需要 SQLAlchemy 0.7.9 以上):

get_ip_info = IPPublicAddressInfo.query.filter_by(ip_crawler_country_id=get_country_id) \
.filter_by(ip_crawler_region_id=get_region_id) \
.filter(IPPublicAddressInfo.ip_crawler_city_id.is_(None)).first()

最后编辑器没有出现提示。


参考资料:

1、Select NULL Values in SQLAlchemy


黄兵个人博客原创。

转载请注明出处:黄兵个人博客 - SQLAlchemy filter None

分享到:

发表评论

评论列表