เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

การโหลดตารางจากฐานข้อมูลอัตโนมัติ

SQLAlchemy รองรับการโหลดตารางจากฐานข้อมูลโดยอัตโนมัติผ่านกระบวนการที่เรียกว่า reflection ซึ่งเป็นการอ่านโครงสร้างฐานข้อมูลและสร้าง metadata จากข้อมูลนั้น กระบวนการนี้ตรงข้ามกับการสร้างตารางด้วยมือ และมีประโยชน์มากเมื่อต้องทำงานกับฐานข้อมูลที่มีอยู่แล้ว

ในการทำ reflection จะต้องนำเข้าและสร้างออบเจ็กต์ MetaData ก่อน ออบเจ็กต์ MetaData เก็บข้อมูลเกี่ยวกับตารางต่าง ๆ ในฐานข้อมูล เมื่อทำ reflection ระบบจะเติมข้อมูลของตารางลงใน MetaData โดยอัตโนมัติ จึงต้องเรียก MetaData() เพื่อสร้างออบเจ็กต์นี้ก่อนเท่านั้น

นอกจากนี้ ยังต้องนำเข้าออบเจ็กต์ Table จากแพ็กเกจ SQLAlchemy แล้วใช้ออบเจ็กต์ดังกล่าวเพื่ออ่านตารางจาก engine โหลดคอลัมน์โดยอัตโนมัติ และเติมข้อมูลลงใน metadata ทั้งหมดนี้ทำได้ด้วยการเรียก Table() เพียงครั้งเดียว ซึ่งคล้ายกับการส่งอาร์กิวเมนต์ให้ฟังก์ชัน ตัวอย่างเช่น หากต้องการโหลดคอลัมน์อัตโนมัติด้วย engine ต้องระบุ keyword arguments autoload=True และ autoload_with=engine ใน Table()

สุดท้าย หากต้องการดูข้อมูลของออบเจ็กต์ที่สร้างขึ้น ให้ใช้ฟังก์ชัน repr() ซึ่งจะคืนค่าเป็นข้อความแสดงรายละเอียดของออบเจ็กต์นั้น สำหรับออบเจ็กต์ Table ใน SQLAlchemy ฟังก์ชันนี้จะแสดงข้อมูลของตารางที่เก็บอยู่ใน metadata

ในแบบฝึกหัดนี้ ให้ reflection ตาราง "census" จาก engine แล้วเก็บผลลัพธ์ไว้ในตัวแปรชื่อ census โดยโค้ดสำหรับสร้าง engine จากแบบฝึกหัดก่อนหน้าได้เตรียมไว้ให้แล้ว

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

Python เบื้องต้นสำหรับฐานข้อมูล

ดูคอร์ส

คำแนะนำการฝึกหัด

  • นำเข้า Table และ MetaData จาก sqlalchemy
  • สร้างออบเจ็กต์ MetaData ชื่อ metadata
  • ทำ reflection ตาราง census โดยใช้ออบเจ็กต์ Table พร้อมอาร์กิวเมนต์ดังนี้:
    • ชื่อตารางในรูปแบบ string ('census')
    • ออบเจ็กต์ metadata ที่สร้างไว้
    • autoload=True
    • engine ที่ต้องการใช้โหลดอัตโนมัติ ในที่นี้คือ engine
  • พิมพ์รายละเอียดของ census โดยใช้ฟังก์ชัน repr()

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

# Import create_engine, MetaData, and Table
from sqlalchemy import create_engine, ___, ____

# Create engine: engine
engine = create_engine('sqlite:///census.sqlite')

# Create a metadata object: metadata
metadata = ___

# Reflect census table from the engine: census
census = Table(____, ____, autoload=____, autoload_with=____)

# Print census table metadata
print(____)
แก้ไขและรันโค้ด