首页 > 解决方案 > 使用多列时如何“删除.().where”

问题描述

先感谢您。我正在尝试使用多列进行删除。我已经尝试了下面的代码,但这些都不起作用。

delete = Material_table.delete().where(Material_table.c.Material_ID==current_material and Material_table.c.Batch_Suffix==current_batch_suffix)

delete = Material_table.delete().where(Material_table.c.Material_ID==current_material, Material_table.c.Batch_Suffix==current_batch_suffix)

delete = Material_table.delete().where(values=dict(Material_ID=current_material, Batch_Suffix=current_batch_suffix)

标签: pythonsqlalchemy

解决方案


这将构建您的查询:

q = Material_table.delete(
    Material_table.c.Material_ID==current_material
    and Material_table.c.Batch_Suffix==current_batch_suffix
)
# but I prefer
q = Material_table.delete(and_(
    Material_table.c.Material_ID==current_material,
    Material_table.c.Batch_Suffix==current_batch_suffix,
))
# you can try to:
print(q)

但是现在您必须执行查询,这取决于您的设置。您可能有一个连接或会话,或者您甚至可能将引擎绑定到元数据。

# one of these might work:
connection.execute(q)
session.execute(q)
q.execute()

推荐阅读