ลบและจัดการแถวที่หายไป
ลบระเบียนและส่ง 404 เมื่อไม่พบ
ลบและจัดการแถวที่หายไป เป็นบทเรียน 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"), 404204 ไม่มีเนื้อหา
การลบที่เรียบร้อยมักส่งกลับ 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- สร้างระเบียนและยืนยันเซสชัน
- ปลายทางอ่านหนึ่งรายการและอ่านหลายรายการ
- อัปเดตระเบียนเดิมอย่างปลอดภัย
- ลบและจัดการแถวที่หายไป