SQLAlchemy Core - ลบตารางหลายรายการ
ในบทนี้เราจะดูนิพจน์การลบตารางหลายรายการซึ่งคล้ายกับการใช้ฟังก์ชันการอัปเดตตารางหลายรายการ
สามารถอ้างถึงตารางมากกว่าหนึ่งตารางใน WHERE clause ของ DELETE ในภาษาถิ่น DBMS สำหรับ PG และ MySQL จะใช้ไวยากรณ์“ DELETE USING” และสำหรับ SQL Server การใช้นิพจน์ "DELETE FROM" หมายถึงตารางมากกว่าหนึ่งตาราง SQLAlchemydelete() โครงสร้างรองรับทั้งสองโหมดนี้โดยปริยายโดยระบุหลายตารางในส่วนคำสั่ง WHERE ดังต่อไปนี้ -
stmt = users.delete().\
where(users.c.id == addresses.c.id).\
where(addresses.c.email_address.startswith('xyz%'))
conn.execute(stmt)
บนแบ็กเอนด์ PostgreSQL SQL ที่เป็นผลลัพธ์จากคำสั่งด้านบนจะแสดงผลเป็น -
DELETE FROM users USING addresses
WHERE users.id = addresses.id
AND (addresses.email_address LIKE %(email_address_1)s || '%%')
หากใช้วิธีนี้กับฐานข้อมูลที่ไม่รองรับลักษณะการทำงานนี้คอมไพลเลอร์จะเพิ่ม NotImplementedError