You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 17:07:02