0Pricing
Python Academy · บทเรียน

การสอบถามด้วยเซสชัน

อ่านและกรองข้อมูล

การสอบถามด้วยเซสชัน เป็นบทเรียน 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

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

  1. SQLAlchemy Core เทียบกับ ORM
  2. การกำหนดโมเดล
  3. การสอบถามด้วยเซสชัน
  4. ความสัมพันธ์และการเชื่อมตาราง
← กลับไปที่ Python Academy