如何在PostgreSQL中删除含Null值的行?Python实现遇阻求助
问题解决方法
核心问题分析
你的代码存在两个关键错误,导致删除操作未生效:
- 异步方法未触发执行:
database.execute()是异步函数,必须通过await关键字调用才会实际执行数据库操作,否则代码会直接跳过这一步。 - NULL值判断逻辑错误:Python的
is None是身份判断,无法被SQL查询构建器解析为SQL的IS NULL条件,导致过滤条件不成立,没有匹配到任何行。
修正后的代码
async def delete_empty_batches(): # 用is_(None)替代is None,正确生成IS NULL条件 delete_query = Batches.delete().where(Batches.c.acquired_by_warehouse_date.is_(None)) # 用await执行删除操作 await database.execute(delete_query) # 执行查询并返回结果 select_query = Batches.select() result = await database.execute(select_query) return result.fetchall()
额外验证建议
可以在删除后获取受影响的行数,确认操作是否成功:
deleted_count = await database.execute(delete_query) print(f"删除了{deleted_count}行")
内容的提问来源于stack exchange,提问作者CulturalDurian
相关产品推荐
相关产品推荐

