文章内容
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
评论列表