การเลือกข้อมูลจากตาราง: raw SQL
อย่างที่เห็นในวิดีโอ การเข้าถึงและจัดการข้อมูลในฐานข้อมูลนั้น เราต้องสร้างการเชื่อมต่อก่อนโดยใช้เมธอด .connect() บน engine เหตุผลคือฟังก์ชัน create_engine() ที่ใช้ไปก่อนหน้านี้จะคืนค่า instance ของ engine เท่านั้น แต่ยังไม่ได้เปิดการเชื่อมต่อจริง จนกว่าจะมีการเรียกใช้งานที่ต้องการการเชื่อมต่อ เช่น การรันคิวรี
เมื่อใช้ความรู้ SQL ที่เพิ่งเรียนไปร่วมกับเมธอด .execute() บน connection เราสามารถใช้ raw SQL query เพื่อดึงข้อมูลทุกแถวจากตาราง census ได้ อ็อบเจกต์ที่เมธอด .execute() คืนค่ามาเรียกว่า ResultProxy จากนั้นเราสามารถเรียกเมธอด .fetchall() บน ResultProxy เพื่อรับผลลัพธ์ที่เรียกว่า ResultSet
ในแบบฝึกหัดนี้ จะใช้การเขียนคิวรี SQL แบบดั้งเดิม โปรดสังเกตว่าเมื่อรันคิวรีด้วย raw SQL จะเป็นการคิวรีตารางในฐานข้อมูลโดยตรง โดยไม่จำเป็นต้องผ่านขั้นตอน reflection
ในแบบฝึกหัดถัดไป เราจะเริ่มใช้ SQLAlchemy และทำความเข้าใจข้อดีของมัน ลุยกันเลย!
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Python เบื้องต้นสำหรับฐานข้อมูล
คำแนะนำการฝึกหัด
- ใช้เมธอด
.connect()ของengineเพื่อสร้างการเชื่อมต่อ - เขียน SQL statement เพื่อเลือกทุกคอลัมน์จาก
censusแล้วเก็บไว้ในตัวแปรstmtโดย SQL statement ต้องอยู่ในรูปแบบ string - ใช้เมธอด
.execute()และ.fetchall()บนconnectionแล้วเก็บผลลัพธ์ไว้ในตัวแปรresultsจำไว้ว่า.execute()ต้องมาก่อน.fetchall()และต้องส่งstmtเข้าไปใน.execute()ด้วย - แสดงผล
results
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
from sqlalchemy import create_engine
engine = create_engine('sqlite:///census.sqlite')
# Create a connection on engine
connection = ___
# Build select statement for census table: stmt
stmt = ____
# Execute the statement and fetch the results: results
results = ____
# Print results
print(____)