我试图通过以下方式删除postgresql db中“ null”的一些行:

async def delete_empty_batches():
    query = Batches.delete().where(Batches.c.acquired_by_warehouse_date is None)
    database.execute(query).fetchall()
    s = Batches.select()
    return await database.execute(s).fetchall()

但是什么都没有发生。我试图在pgadmin中进行查询,但它起作用了,但我无法与Python相处。 我在编程方面是绿色的,我应该如何处理?

分析解答

尝试使用下一个代码段:

from sqlalchemy import select, delete
from sqlalchemy.exc import IntegrityError

async def delete_and_select_batches():
    async with database.transaction():
        # Delete rows with null values in acquired_by_warehouse_date column
        delete_query = delete(Batches).where(Batches.c.acquired_by_warehouse_date == None)
        await database.execute(delete_query)

        # Select remaining rows
        select_query = select([Batches])
        result = await database.execute(select_query)
        return result.fetchall()

注意:使用==代替where子句中的is来比较平等的值。