Flask Academy · บทเรียน

ลบและจัดการแถวที่หายไป

ลบระเบียนและส่ง 404 เมื่อไม่พบ

บทเรียน 4 จาก 413 ขั้นตอน

ลบและจัดการแถวที่หายไป เป็นบทเรียน Flask Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Flask Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Flask Academy มีบทเรียนทั้งหมด 4 บทเรียน

D ใน CRUD

การลบจะนำแถวออกอย่างถาวร เช่นเดียวกับการอัปเดต คุณต้อง load ระเบียนก่อน แล้วจึงบอกให้ session ลบระเบียนนั้น 🗑️

โหลดแถวเป้าหมาย

ดึงระเบียนตาม id ก่อนลบ เมื่อใช้ get_or_404() หากไม่พบ id คำขอจะยุติลงอย่างเรียบร้อยด้วย 404

user = User.query.get_or_404(user_id)

ทำเครื่องหมายเพื่อลบ

เตรียมการลบด้วย db.session.delete() แถวยังไม่หายไปในทันที แต่ถูกจัดคิวไว้ในธุรกรรมปัจจุบัน

db.session.delete(user)

Commit เพื่อลบ

เช่นเดียวกับการเขียนข้อมูลทุกครั้ง จะยังไม่มีอะไรเกิดขึ้นจนกว่าคุณจะเรียก commit() คำสั่งนี้จะดำเนินการ DELETE และแถวจะหายไปจริง

db.session.delete(user)
db.session.commit()

จัดการแถวที่ไม่พบก่อน

การลบ id ที่ไม่มีอยู่ถือเป็นข้อผิดพลาดจากไคลเอนต์ ให้ตอบกลับด้วย 404 แทนการทำเหมือนว่าการลบสำเร็จ

user = User.query.get(user_id)
if user is None:
    return jsonify(error="not found"), 404

204 ไม่มีเนื้อหา

การลบที่เรียบร้อยมักส่งกลับ 204 ซึ่งเป็นสถานะที่หมายถึงสำเร็จและไม่มีข้อมูลที่เป็นประโยชน์เหลือให้ส่งกลับ

return "", 204

ย้อนกลับเมื่อเกิดข้อผิดพลาด

หาก commit ล้มเหลว เช่น foreign key ขัดขวางการลบ ให้เรียก rollback() เพื่อยกเลิกการลบที่เตรียมไว้และรักษาความสอดคล้องของข้อมูล

except Exception:
    db.session.rollback()

การลบมีคุณสมบัติไอดีมโพเทนต์

การเรียกใช้การลบกับ id เดิมซ้ำสองครั้งควรให้ผลเหมือนเดิม กล่าวคือ แถวข้อมูลนั้น ไม่มีอยู่ แล้ว ดังนั้นการได้รับ 404 ซ้ำจึงเป็นเรื่องปกติ

ระวังความสัมพันธ์

การลบข้อมูลแม่อาจทำให้ข้อมูลลูกกลายเป็นข้อมูลกำพร้า โปรดกำหนด cascade ให้กับความสัมพันธ์ เพื่อให้แถวข้อมูลที่เกี่ยวข้องถูกล้างออกไปด้วย

posts = relationship("Post", cascade="all, delete")

พิจารณาการลบแบบนุ่มนวล

บางครั้งคุณไม่ควรลบข้อมูลทิ้ง การ ลบแบบนุ่มนวล จะเปลี่ยนค่าแฟล็ก is_deleted แทน โดยเก็บแถวข้อมูลไว้สำหรับการตรวจสอบย้อนหลัง

user.is_deleted = True
db.session.commit()

โหลด ลบ คอมมิต

ขั้นตอนการลบทำงานคล้ายกับการอัปเดต คือ โหลด แถวข้อมูล ทำเครื่องหมายเพื่อลบ แล้วจึงคอมมิต หากไม่พบ id ระบบจะแจ้ง 404 อย่างเรียบร้อย

ตรวจสอบอย่างรวดเร็ว

คำขอ DELETE สำเร็จและไม่มีเนื้อหาให้ส่งกลับ สถานะใดเหมาะสมที่สุด

สรุป: การลบระเบียน

คุณโหลดข้อมูลด้วย get_or_404 เรียกใช้ การลบ คอมมิต แล้วตอบกลับด้วย 204 โดยมีการลบแบบต่อเนื่องและการลบแบบนุ่มนวลเป็นตัวเลือกที่เหมาะสม การทำงาน CRUD ครบถ้วนแล้ว! 🎉

เริ่มต้นได้ฟรี

เรียนรู้ Python ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
30
บทเรียน
120

คำถามที่พบบ่อย

บทเรียน “ลบและจัดการแถวที่หายไป” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “ลบและจัดการแถวที่หายไป” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Flask Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Flask Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “ลบและจัดการแถวที่หายไป”

ลบระเบียนและส่ง 404 เมื่อไม่พบ คุณปฏิบัติ Flask Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Flask Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Flask Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน

บทเรียน “ลบและจัดการแถวที่หายไป” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Flask Academy นี้ได้ไหม

ได้ บทเรียน Flask Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. สร้างระเบียนและยืนยันเซสชัน
  2. ปลายทางอ่านหนึ่งรายการและอ่านหลายรายการ
  3. อัปเดตระเบียนเดิมอย่างปลอดภัย
  4. ลบและจัดการแถวที่หายไป
← กลับไปที่ Flask Academy