ภาพการ์ตูนงูสีเขียวกำลังเปลี่ยนหัวปลั๊กที่ต่อเข้าโน้ตบุ๊ก ข้างตู้ลิ้นชักไม้และกระดาษเช็กลิสต์สีอำพันที่ติ๊กไว้หลายช่อง

SQLAlchemy 2.1 มาแล้ว: เช็กก่อนอัปเกรด ไม่ให้หลังร้านสะดุด

น้องกายEngineering

SQLAlchemy 2.1 กลายเป็นรุ่นที่ติดตั้งด้วย pip install sqlalchemy ตามประกาศของโครงการ แปลว่าคำสั่งเดิมอาจได้เครื่องมือคนละรุ่นกับที่ระบบเคยใช้ครับ (SQLAlchemy) การเปลี่ยนนี้เริ่มวันที่ 24 กันยายน 2026 และมีจุดที่ต้องปรับก่อนใช้งานจริง (ประกาศเปิดตัว)

สำหรับคนทำระบบหลังร้าน ประเด็นคือวันที่สร้างระบบใหม่แล้วมันยังเปิดรายการขายได้หรือเปล่า SQLAlchemy คือเครื่องมือให้โปรแกรมภาษา Python ทำงานกับฐานข้อมูล ทั้งผ่านคำสั่งโดยตรงและผ่านข้อมูลในรูปวัตถุของโปรแกรม (คู่มือทางการ) บทความนี้ใช้ระบบร้านค้า จองคิว และบัญชีเป็นตัวอย่างให้เห็นงานที่ควรตรวจ ไม่ได้รายงานว่าธุรกิจเหล่านี้เกิดเหตุขัดข้องแล้ว

สรุป 30 วินาที: เกิดอะไรขึ้น

โครงการประกาศรุ่นใช้งานจริง พร้อมเปลี่ยนเงื่อนไขติดตั้งและตัวเชื่อมฐานข้อมูลที่เลือกให้อัตโนมัติ (SQLAlchemy) Python ขั้นต่ำคือ 3.11 แปลว่าเครื่องที่ใช้รุ่นเก่ากว่านี้ต้องจัดการสภาพแวดล้อมก่อนย้ายครับ (คู่มือการย้าย)

ส่วนเสริมชื่อ greenlet ซึ่งงานแบบ asyncio ต้องใช้ ไม่ติดตั้งมาด้วยตามค่าเริ่มต้นอีกแล้ว asyncio คือรูปแบบทำงานที่ให้โปรแกรมสลับไปทำงานอื่นระหว่างรอ เช่น รอคำตอบจากฐานข้อมูล ผู้ใช้ส่วนนี้ต้องเลือกติดตั้ง sqlalchemy[asyncio] เพื่อรวม greenlet ด้วย (คู่มือทางการ)

ที่อยู่เชื่อมต่อแบบ postgresql:// เปลี่ยนไปเลือก psycopg ซึ่งเป็นตัวเชื่อมรุ่นใหม่ ส่วน oracle:// เลือก oracledb (คู่มือทางการ) Driver หรือตัวเชื่อม คือซอฟต์แวร์ที่รับส่งคำสั่งกับฐานข้อมูลจริง ดังนั้นการอ่านที่อยู่เดิมได้ ไม่ได้แปลว่าชุดติดตั้งเดิมมีตัวเชื่อมที่ต้องใช้ครบ

รุ่น 2.1.2 แก้ regression สำคัญของ selectinload() แปลว่ามีการแก้บั๊กที่เกิดหลังเปลี่ยนรุ่นในส่วนโหลดข้อมูลที่สัมพันธ์กัน (ประกาศแก้ไข) โครงการเผยแพร่ประกาศนี้วันที่ 2 ตุลาคม 2026 และแนะนำผู้ใช้สายรุ่นใหม่ทุกคนให้อัปเกรด (SQLAlchemy)

หน้าดาวน์โหลดที่ตรวจพบระบุรุ่นล่าสุดเป็น 2.1.3 แปลว่ามีรุ่นปัจจุบันให้พิจารณานอกเหนือจากรุ่นแก้บั๊กข้างต้นแล้ว (หน้าดาวน์โหลด) ตารางเดียวกันระบุวันที่รุ่นล่าสุดเป็น 2 ตุลาคม 2026 แต่ไม่ได้แจกแจงรายการแก้ไขเฉพาะรุ่นนั้นในข้อความที่มี (สถานะรุ่น)

ทำไมเรื่องนี้เกี่ยวกับคุณ

หากคุณเป็นเจ้าของร้านหรือพนักงานบัญชี ไม่จำเป็นต้องจำชื่อแพ็กเกจทั้งหมดครับ สิ่งที่ควรขอจากผู้ดูแลระบบคือหลักฐานว่า ติดตั้งใหม่แล้วงานสำคัญยังทำได้ Real Python เตือนว่ารายการติดตั้งที่เขียนเพียง sqlalchemy โดยไม่มีขอบเขตรุ่น อาจรับรุ่นใหม่ในการติดตั้งใหม่หรืออัปเกรด หากไม่มีแพ็กเกจอื่นกำหนดข้อจำกัดไว้ (Real Python)

ตัวอย่างที่ควรนำไปทดสอบคือ เปิดใบสั่งซื้อพร้อมรายการสินค้า ดูการจองพร้อมข้อมูลผู้จอง และบันทึกรายการบัญชี ตัวอย่างเหล่านี้เป็นข้อเสนอสำหรับตรวจงานจริง ไม่ใช่รายชื่อระบบที่โครงการยืนยันว่าได้รับผลกระทบ ประกาศแก้บั๊กให้เหตุผลที่ควรตรวจส่วนโหลดข้อมูลสัมพันธ์ แต่ยังไม่ได้บอกอาการละเอียดของทุกแอป (ประกาศแก้ไข)

สำหรับนักศึกษาหรือคนทำโปรเจกต์ เครื่องเดิมที่เปิดได้ยังไม่ใช่หลักฐานว่าชุดติดตั้งใหม่จะเปิดได้เหมือนกัน ข้อควรระวังนี้ตามมาจากการเปลี่ยนส่วนเสริมและตัวเชื่อมที่ติดตั้งหรือเลือกโดยอัตโนมัติ (คู่มือทางการ) ลองให้เพื่อนติดตั้งจากรายการเดียวกับที่จะส่งงาน แล้วตรวจขั้นตอนใช้งานตั้งแต่ต้น จะช่วยให้เห็นสิ่งที่เครื่องเราอาจมีอยู่แล้ว

คำสั่งติดตั้งไม่ได้เปลี่ยน แล้วทำไมแอปถึงเสี่ยงเปลี่ยนตาม? คำตอบอยู่ที่สิ่งซึ่งคำสั่งนั้นเลือกมาให้ และค่าที่โปรแกรมเคยปล่อยให้เครื่องมือเลือกแทนครับ (Real Python)

ทำงานยังไง

ORM คือวิธีผูกข้อมูลในตารางฐานข้อมูลกับวัตถุในโปรแกรม เช่น ข้อมูลลูกค้าและรายการซื้อ โปรแกรมจึงจัดการข้อมูลผ่านวัตถุ แล้วให้เครื่องมือทำงานกับฐานข้อมูลต่อ คู่มือแยกการเปลี่ยนพฤติกรรมของ ORM ออกจากส่วนสร้างคำสั่งฐานข้อมูล เพราะแต่ละชั้นมีสิ่งที่ต้องตรวจต่างกัน (คู่มือ SQLAlchemy)

เปรียบกับร้านข้าวตามสั่งครับ โปรแกรมเป็นคนจดออร์เดอร์ SQLAlchemy ช่วยจัดคำสั่ง ส่วน driver เป็นคนส่งคำสั่งไปให้ครัวฐานข้อมูล การเปลี่ยนคนส่งโดยอัตโนมัติจึงต้องตรวจว่าร้านเตรียมคนใหม่ไว้แล้ว ส่วน greenlet เป็นตัวช่วยภายในงานสลับการทำงานของส่วน asyncio ซึ่งร้านที่ใช้รูปแบบนี้ต้องขอเพิ่มให้ชัด (กลไกและเงื่อนไขในคู่มือ)

ในทางเทคนิค greenlet เป็นแพ็กเกจที่ส่วนขยาย asyncio ของ SQLAlchemy ต้องใช้ คู่มืออธิบายว่าการติดตั้งอัตโนมัติแบบเก่า มีความซับซ้อนเรื่องชุดสำเร็จรูปและเครื่องมือจัดการแพ็กเกจ การย้ายไปอยู่ในตัวเลือก [asyncio] แก้ปัญหาเหล่านั้น แต่เพิ่มหน้าที่ให้ผู้ใช้ต้องระบุส่วนเสริมเอง (คู่มือการย้าย)

เรื่องตัวเชื่อมก็ไม่ได้บังคับให้ทุกคนทิ้งตัวเดิม คู่มือยังรองรับ psycopg2 และให้ระบุ postgresql+psycopg2:// เพื่อเลือกอย่างชัดเจน (คู่มือ PostgreSQL) ฝั่ง Oracle ยังรองรับ cx_oracle ผ่าน oracle+cx_oracle:// เช่นกัน (คู่มือ Oracle) การระบุชื่อจึงช่วยแยกการย้าย SQLAlchemy ออกจากการเปลี่ยนตัวเชื่อมในรอบเดียวกัน

ฟีเจอร์ tstring() รับ template string หรือข้อความแม่แบบที่แยกส่วนข้อความกับค่าที่แทรกเข้ามา Python 3.14 เป็นเงื่อนไขสำหรับฟีเจอร์นี้ แปลว่าถึงผ่านขั้นต่ำของ SQLAlchemy ก็ยังต้องตรวจภาษาให้รองรับก่อนใช้ (คู่มือ t-string) ค่าธรรมดาจาก Python จะถูกส่งเป็นพารามิเตอร์ คือข้อมูลที่แยกจากโครงคำสั่ง แทนการต่อข้อความให้กลายเป็นคำสั่งเดียวกัน (Real Python)

การแยกค่าจากคำสั่งเป็นเหตุผลที่วิธีนี้ปลอดภัยกว่าการนำค่ามาต่อเป็นข้อความ SQL โดยตรง แต่ไม่ได้รับรองความปลอดภัยของทั้งแอปครับ คู่มือแยกค่าธรรมดา นิพจน์ของ SQLAlchemy และข้อความในแม่แบบออกจากกันชัดเจน (รายละเอียดทางการ) ทีมจึงยังควรตรวจว่าค่าจากผู้ใช้ถูกส่งเข้าไปในส่วนข้อมูลจริง

จุดหักมุม: รุ่นใช้งานจริง ยังต้องตามรุ่นแก้บั๊ก

แต่คำว่าใช้งานจริง ไม่ได้หมายความว่าไม่มีบั๊กหลงมา โครงการระบุเองว่าหลังเปิดตัวมี regression ที่ผู้ใช้รายงาน และต้องแก้ส่วน selectinload() อย่างสำคัญ (SQLAlchemy)

คำแนะนำสำหรับผู้ที่ย้ายมาแล้วคืออัปเกรดอย่างน้อยถึงรุ่น 2.1.2 แปลว่าควรรับการแก้ไขนี้ก่อนถือว่ารอบอัปเกรดเสร็จ (ประกาศโครงการ) อย่าอ่านคำว่า critical แล้วสรุปว่าเป็นช่องโหว่ครับ ประกาศที่มีบอกว่าเป็น regression สำคัญ ไม่ได้กล่าวถึงการโจมตีหรือข้อมูลรั่ว

เรื่องเงิน / ผลกระทบ

SQLAlchemy ใช้สัญญาอนุญาต MIT ตามหน้าดาวน์โหลด (SQLAlchemy) แต่แหล่งที่มีไม่ได้ให้ตัวเลขค่าใช้จ่ายย้ายระบบ หรือยอดเสียหายของธุรกิจไทย จึงไม่มีฐานให้บอกว่าการอัปเกรดจะประหยัดหรือเสียเงินเท่าไร

ข้อเสนอสำหรับเจ้าของกิจการคือ แยกเวลาปรับชุดติดตั้งออกจากเวลาตรวจงานของพนักงาน ให้ทีมตรวจการเชื่อมต่อก่อน แล้วให้ผู้ใช้งานตรวจรายการขาย การจอง หรือรายงานที่ตนใช้จริง เหตุผลคือจุดเปลี่ยนในคู่มือครอบคลุมทั้งการติดตั้ง ตัวเชื่อม และพฤติกรรมเมื่อสั่งฐานข้อมูล (คู่มือการย้าย) อย่าวัดความพร้อมด้วยการเห็นหน้าล็อกอินเพียงอย่างเดียว

คู่มือยังเพิ่มการรองรับ CREATE VIEW คือการสร้างมุมมองข้อมูลจากคำสั่งค้นหา และ CREATE TABLE AS คือการสร้างตารางจากผลค้นหา (คู่มือฟีเจอร์ใหม่) ทีมที่ทำรายงานอาจนำไปพิจารณาลดโค้ดเฉพาะของตน แต่ควรตรวจฐานข้อมูลและงานจริงก่อน ไม่มีผลทดสอบในแหล่งที่อ่านเพื่อรับรองว่าจะทำให้รายงานของคุณเร็วขึ้นเท่าไร

อีกทางเลือกคือ mssql-python ตัวเชื่อม Python อย่างเป็นทางการของ Microsoft สำหรับ SQL Server ซึ่ง SQLAlchemy เพิ่มการรองรับแล้ว (คู่มือ SQL Server) นี่เป็นตัวเลือกให้ทีมประเมินตามระบบที่ใช้ ไม่ใช่เหตุผลว่าร้านที่เชื่อมต่อได้อยู่แล้วต้องเปลี่ยนทุกอย่างพร้อมกัน

สำหรับทีมหลังบ้าน ควรเผื่อการทดสอบพฤติกรรมด้วย คู่มือระบุว่า autoflush หรือการส่งการเปลี่ยนข้อมูลที่ค้างอยู่ไปยังฐานข้อมูลก่อนทำคำสั่ง เกิดกับการเรียกคำสั่งทุกชนิดใน Session ตามพฤติกรรมใหม่ (คู่มือ ORM) Session คือส่วนที่จัดการงานฐานข้อมูลของโปรแกรม ทีมที่เคยพึ่งลำดับเดิมควรตรวจจังหวะบันทึกข้อมูล โดยไม่ตีความว่าการส่งข้อมูลนี้เท่ากับยืนยันรายการถาวรแล้ว

ข้อมูลที่ยังไม่ชัด และจุดที่แหล่งข่าวพูดไม่ตรงกัน

เสียงสนับสนุนการย้ายมาจาก Mike Bayer และโครงการ SQLAlchemy ประกาศอธิบายว่ารอบนี้ไม่เปลี่ยนใหญ่เท่ารอบก่อน และไม่คาดว่าทางอัปเกรดจะยาก (ประกาศเปิดตัว) หน้าดาวน์โหลดยังแนะนำแอปที่พัฒนาต่อเนื่องให้เริ่มย้ายมาสายรุ่นปัจจุบัน โดยสายเดิมอยู่ในสถานะดูแลแก้ปัญหาสำคัญ (สถานะการสนับสนุน)

เสียงเตือนต่อการย้ายโดยไม่ตรวจมาจาก Real Python ส่วนข่าว SQLAlchemy ชี้ว่าจุดเปลี่ยนแบบบังคับยังทำให้ชุดติดตั้งที่เคยทำงานพังได้ และเน้นความเสี่ยงของรายการติดตั้งที่ไม่กำหนดขอบเขตรุ่น (Real Python) นี่เป็นน้ำหนักการเล่าต่างกัน ไม่ได้ขัดกันเรื่องวันเปิดตัวหรือตัวเชื่อมใหม่ และแหล่งที่มีไม่มีองค์กรซึ่งประกาศคัดค้านการย้ายทั้งหมด

ข้อความเรื่องระยะเวลาพัฒนาต่างกันเล็กน้อย ประกาศโครงการใช้คำว่าสามปีหลังสายรุ่นก่อน (SQLAlchemy) Real Python ระบุว่ามากกว่าสามปีครึ่ง แปลว่าสื่อให้ช่วงเวลาละเอียดกว่าคำอธิบายโดยรวมของโครงการ (Real Python) ความต่างนี้ไม่ได้เปลี่ยนรายการที่ทีมต้องตรวจ จึงไม่ควรนำไปขยายเป็นความขัดแย้งด้านเทคนิค

หน้าดาวน์โหลดยืนยันรุ่นปัจจุบันและวันที่ในตาราง แต่ข้อความที่มีไม่ใช่บันทึกแก้ไขรายข้อของรุ่นล่าสุด (หน้าดาวน์โหลด) ส่วนประกาศแก้ regression ยืนยันการแก้ selectinload() โดยไม่ได้บอกเงื่อนไขเกิดเหตุหรืออาการครบถ้วน (ประกาศแก้ไข) บทความนี้จึงไม่ระบุว่าบั๊กทำให้ข้อมูลหาย หรือว่ารุ่นล่าสุดแก้ทุกปัญหาของทุกแอปแล้ว

แล้วระบบของคุณจะผ่านการย้ายโดยไม่ต้องแก้เลยหรือเปล่า? แหล่งข่าวตอบแทนไม่ได้ เพราะไม่มีรายการแพ็กเกจ ตัวเชื่อม และผลทดสอบของระบบคุณ ผมยังไม่ได้ทดลองแอปของผู้อ่าน ข้อแนะนำต่อไปจึงเป็นรายการเตรียมตรวจจากเอกสาร ไม่ใช่ผลรับรองความเข้ากันได้

แล้วเราควรทำอะไร

เจ้าของกิจการและผู้ใช้ระบบทั่วไป — ทำตามได้เลย

  1. ส่งข่าวนี้ให้ผู้ดูแลระบบ ขอให้ยืนยันว่าระบบใช้ SQLAlchemy หรือไม่ และติดตั้งรุ่นใดจริง อย่าเพิ่งให้เปลี่ยนเครื่องมือจากชื่อข่าวอย่างเดียว
  2. เขียนรายการงานที่ต้องเปิดได้หลังอัปเกรด เช่น บันทึกขาย เปิดรายละเอียดใบสั่งซื้อ และเรียกรายงาน ให้คนทำงานจริงช่วยตรวจผลลัพธ์
  3. ขอรอบทดสอบและผู้รับผิดชอบก่อนเปลี่ยนระบบใช้งานจริง โครงการแนะนำการทดสอบและพื้นที่ทดลองก่อนอัปเกรด แม้เป็นรุ่นย่อยแก้บั๊ก (แนวทางโครงการ)

ทีม IT และผู้ดูแลหลังบ้าน — ทำตามได้เลย

  1. ตรวจ Python ทั้งเครื่องพัฒนา เครื่องทดสอบ และเครื่องใช้งานจริง เทียบกับขั้นต่ำในคู่มือ อย่าใช้ผลจากโน้ตบุ๊กเพียงเครื่องเดียวตัดสิน (เงื่อนไข Python)
  2. ตรวจรายการแพ็กเกจที่ต้องใช้ร่วมกัน หากใช้ส่วน asyncio ให้ระบุ sqlalchemy[asyncio] แล้วทดลองติดตั้งในสภาพแวดล้อมใหม่ เพื่อเห็นว่าของจำเป็นถูกติดตั้งครบ (เงื่อนไข greenlet)
  3. ตรวจที่อยู่เชื่อมต่อ PostgreSQL และ Oracle ระบุ driver ให้ตรงกับที่ทีมตั้งใจใช้ พร้อมตรวจว่าติดตั้งตัวนั้นจริง คู่มือให้เลือกทั้งตัวใหม่และตัวเดิมอย่างชัดเจนได้ (คู่มือ driver)
  4. หากอยู่ในสายรุ่นใหม่ ให้รับรุ่นแก้ regression แล้วทดสอบงานอ่านข้อมูลสัมพันธ์ ตรวจทั้งว่าหน้าจอเปิดได้และข้อมูลที่แสดงตรงกับที่คาด (คำแนะนำให้อัปเกรด)
  5. บันทึกรุ่นที่ผ่านการทดสอบ และเตรียมวิธีกลับชุดติดตั้งเดิมไว้ก่อนเปลี่ยนงานจริง แนวคิดนี้ใช้ประกอบคำแนะนำของโครงการที่ให้ทดสอบทุกครั้งเมื่ออัปเกรด (หน้าดาวน์โหลด)

นักพัฒนาและนักศึกษา — ทำตามได้เลย

  1. อ่านส่วน behavioral changes หรือพฤติกรรมที่เปลี่ยนในคู่มือก่อนเริ่มย้าย โดยเฉพาะจังหวะส่งข้อมูลใน Session และคำสั่งที่รวมข้อมูลหลายตาราง (คู่มือการย้าย)
  2. หากใช้ Select.filter_by() กับหลายตาราง ตรวจชื่อคอลัมน์ซ้ำ เช่น id คู่มือระบุว่าชื่อกำกวมทำให้เกิดข้อผิดพลาด และให้ใช้ Select.filter() อ้างคอลัมน์อย่างชัดเจนแทน (รายละเอียด filter_by)
  3. แยกการทดลองฟีเจอร์ใหม่ออกจากการย้ายชุดติดตั้งขั้นต่ำ หากจะใช้ tstring() ให้ตรวจ Python ที่รองรับ และอ่านข้อกำหนดเรื่องค่าที่แทรกในแม่แบบก่อน (คู่มือ tstring)

ผมมองว่า…

ผมมองว่า ข่าวนี้ไม่ใช่การแข่งขันว่าใครอัปเกรดเร็วกว่า แต่คือการทำให้ระบบติดตั้งซ้ำได้อย่างที่ทีมตั้งใจ ร้านเล็กไม่จำเป็นต้องทดลองทุกฟีเจอร์ทันที ควรรู้ก่อนว่าคนดูแลเลือกตัวเชื่อมอะไร และทดสอบงานที่เกี่ยวกับรายได้ครบหรือยัง

ผมมองว่า การระบุส่วนเสริมและตัวเชื่อมให้ชัด เป็นงานที่ให้ประโยชน์แม้ยังไม่ใช้ฟีเจอร์ใหม่ การอัปเกรดควรมีผลทดสอบประกอบการตัดสินใจ ส่วนคำว่าใช้งานจริงควรเป็นจุดเริ่มอ่านข้อกำหนด ไม่ใช่จุดจบของการตรวจครับ

ปิดท้าย: สิ่งที่ต้องจับตา

ความพร้อมของหลังร้านควรวัดจากงานที่ทำซ้ำได้หลังติดตั้งใหม่ มากกว่าหมายเลขรุ่นบนหน้าดาวน์โหลด สิ่งที่ควรติดตามต่อคือบันทึกแก้ไขของรุ่นปัจจุบัน และผลทดสอบงานโหลดข้อมูลสัมพันธ์ของทีมคุณ หลังประกาศแก้ไขวันที่ 2 ตุลาคม 2026 (SQLAlchemy) โครงการยังย้ำว่ารุ่นแก้บั๊กอาจมี regression โดยไม่ตั้งใจ จึงควรตรวจซ้ำตามงานของแอป (นโยบายรุ่น)

ถ้าต้องติดตั้งระบบหลังร้านใหม่วันนี้ คุณมีรายการรุ่นและผลทดสอบหน้ารายละเอียดใบสั่งซื้อที่ส่งให้ผู้ดูแลได้ทันทีหรือยัง?

Recap

  • เกิดอะไรขึ้น: คำสั่งติดตั้งทั่วไปเลือกสายรุ่นใหม่ ตามประกาศวันที่ 24 กันยายน 2026 (1)
  • ตัวเลขที่ต้องจำ: ขั้นต่ำ 3.11 แปลว่าต้องตรวจ Python ก่อนย้าย (3)
  • รับการแก้ regression: อย่างน้อยรุ่น 2.1.2 แปลว่าต้องตามการแก้ selectinload() ก่อนจบรอบย้าย (2)
  • รุ่นปัจจุบันที่แหล่งยืนยันคือ 2.1.3 แปลว่าควรตรวจบันทึกแก้ไขและทดสอบรุ่นที่เลือกจริง (5)
  • ใครเห็นต่าง: โครงการคาดว่าย้ายไม่ยาก ส่วน Real Python เน้นจุดที่ทำให้ชุดติดตั้งเดิมพัง ไม่มีหลักฐานว่าคัดค้านกันทั้งหมด (1, 4)
  • ยังไม่รู้: อาการครบถ้วนของ regression และความเข้ากันได้กับแอปของคุณ ต้องตรวจของจริง
  • ผลต่อคนไทย: ให้ผู้ดูแลตรวจงานขาย จองคิว หรือบัญชีที่คุณใช้ พร้อมระบุส่วนเสริมและ driver
  • สิ่งที่ต้องจับตา: รุ่นแก้ไขถัดไป และผลติดตั้งใหม่ที่ทำงานสำคัญได้ครบ
  • แหล่งอ่านต่อ: 1 ประกาศเปิดตัว · 2 ประกาศแก้บั๊ก · 3 คู่มือการย้าย · 4 Real Python · 5 หน้าดาวน์โหลด