การสอบถามด้วยเซสชัน
อ่านและกรองข้อมูล
การสอบถามด้วยเซสชัน เป็นบทเรียน Python Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Python Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Python Academy มีบทเรียนทั้งหมด 4 บทเรียน
เซสชัน
ORM ทำงานทั้งหมดผ่าน เซสชัน โดยเซสชันจะจัดการหน่วยงานหนึ่งชุด ได้แก่ การติดตามออบเจ็กต์ที่เพิ่มใหม่ เปลี่ยนแปลง หรือลบออก รวมถึงการสื่อสารกับฐานข้อมูล
from sqlalchemy import create_engine
from sqlalchemy.orm import Session
engine = create_engine('sqlite:///:memory:')
with Session(engine) as session:
print('Session open:', session)การเพิ่มออบเจ็กต์
session.add() เตรียมออบเจ็กต์ใหม่ไว้ก่อน โดยออบเจ็กต์จะยังไม่ถูกส่งไปยังฐานข้อมูลจนกว่าจะเรียกใช้ commit()
from sqlalchemy.orm import Session
# session.add(user) stages it
# session.commit() writes it
print('add stages, commit saves')การยืนยันการเปลี่ยนแปลง
session.commit() จะส่งการเปลี่ยนแปลงที่รอดำเนินการไปยังฐานข้อมูลและยืนยันธุรกรรม ทำให้การเปลี่ยนแปลงเหล่านั้นมีผลถาวร
# with Session(engine) as session:
# session.add(User(name='Alice'))
# session.commit()
print('commit persists the work')การเรียกดูข้อมูลด้วย select()
SQLAlchemy รุ่นใหม่ใช้ select() เพื่ออ่านข้อมูล โดยดำเนินการผ่านเซสชัน ส่วน scalars() จะส่งคืนอินสแตนซ์ของโมเดล
from sqlalchemy import select
# stmt = select(User)
# users = session.scalars(stmt).all()
print('select(User) then scalars().all()')การดึงข้อมูลทุกแถว
session.scalars(select(User)).all() จะส่งคืนรายการออบเจ็กต์ User ทุกตัวในตาราง
from sqlalchemy import select
# all_users = session.scalars(select(User)).all()
# for u in all_users:
# print(u.name)
print('all() returns a list of objects')การกรองด้วย where()
เพิ่มเงื่อนไข where() เพื่อกรองข้อมูล แล้วเปรียบเทียบคอลัมน์ที่แมปไว้ด้วยตัวดำเนินการปกติของ Python
from sqlalchemy import select
# stmt = select(User).where(User.age > 28)
# adults = session.scalars(stmt).all()
print('where(User.age > 28) filters rows')การดึงออบเจ็กต์หนึ่งรายการ
session.scalars(stmt).first() จะส่งคืนผลลัพธ์แรกที่ตรงกัน หรือ None หากไม่พบผลลัพธ์ ส่วน one() ต้องพบแถวที่ตรงกันเพียงหนึ่งแถวเท่านั้น มิฉะนั้นจะเกิดข้อผิดพลาด
from sqlalchemy import select
# stmt = select(User).where(User.name == 'Alice')
# user = session.scalars(stmt).first()
print('first() = first match or None')การค้นหาด้วยคีย์หลัก
session.get(User, 1) เป็นวิธีที่รวดเร็วที่สุดในการดึงออบเจ็กต์หนึ่งรายการด้วยคีย์หลัก
# user = session.get(User, 1)
# print(user.name)
print('session.get(Model, pk) fetches by id')การจัดเรียงผลลัพธ์
ต่อ order_by() เพื่อจัดเรียงข้อมูล และใช้ .desc() กับคอลัมน์เพื่อเรียงลำดับจากมากไปน้อย
from sqlalchemy import select
# stmt = select(User).order_by(User.age.desc())
# sorted_users = session.scalars(stmt).all()
print('order_by(User.age.desc()) sorts results')การอัปเดตออบเจ็กต์
เปลี่ยนแอตทริบิวต์ของออบเจ็กต์ที่โหลดไว้ แล้วเรียกใช้ commit() เซสชันจะตรวจพบการเปลี่ยนแปลงและดำเนินการ UPDATE
# user = session.get(User, 1)
# user.name = 'Alicia'
# session.commit() # auto UPDATE
print('Edit attribute, then commit')การลบออบเจ็กต์
session.delete(obj) จะทำเครื่องหมายออบเจ็กต์ไว้เพื่อลบ การลบด้วย DELETE จะเกิดขึ้นเมื่อยืนยันครั้งถัดไป
# user = session.get(User, 1)
# session.delete(user)
# session.commit() # row removed
print('delete(obj) then commit removes the row')ตรวจสอบความเข้าใจ
ทดสอบความเข้าใจเรื่องเซสชันของคุณ
สรุปทบทวน
คุณได้เรียนรู้การอ่านและเปลี่ยนแปลงข้อมูลผ่านเซสชัน
Sessionติดตามหน่วยงานของคุณadd()เตรียมข้อมูลไว้ ส่วนcommit()ทำให้ข้อมูลถูกบันทึกถาวรselect()+scalars()ใช้อ่านออบเจ็กต์ ส่วนwhere()ใช้กรองข้อมูลsession.get()ใช้ดึงข้อมูลด้วยคีย์หลัก ส่วนการแก้ไขและdelete()จะมีผลเมื่อยืนยันการเปลี่ยนแปลง
คำถามที่พบบ่อย
บทเรียน “การสอบถามด้วยเซสชัน” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การสอบถามด้วยเซสชัน” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Python Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Python Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การสอบถามด้วยเซสชัน”
อ่านและกรองข้อมูล คุณปฏิบัติ Python Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Python Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Python Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “การสอบถามด้วยเซสชัน” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Python Academy นี้ได้ไหม
ได้ บทเรียน Python Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- SQLAlchemy Core เทียบกับ ORM
- การกำหนดโมเดล
- การสอบถามด้วยเซสชัน
- ความสัมพันธ์และการเชื่อมตาราง