ในบทช่วยสอนนี้ เราจะเรียนรู้วิธีใช้ SQL กับ Python ผ่านฐานข้อมูล SQLite Python มีโมดูล built-in สำหรับเชื่อมต่อ SQLite เราจะใช้โมดูล sqlite3
ขั้นตอนเชื่อมต่อ SQLite กับ Python:
- นำเข้าโมดูล sqlite3
- สร้างการเชื่อมต่อด้วย sqlite3.connect(db_name) รับชื่อ database เป็นอาร์กิวเมนต์ สร้างไฟล์ใหม่หากยังไม่มี มิฉะนั้นเปิดไฟล์ที่มีอยู่
- ดึง cursor object จาก connection ด้วย conn.cursor() เป็นตัวกลางระหว่าง Python และ SQLite ใช้ cursor นี้รันคำสั่ง SQL
สามขั้นตอนข้างต้นช่วยสร้างการเชื่อมต่อกับ SQLite เหมือนกับ database อื่นๆ ใน Python ดูโค้ดด้านล่างหากสับสน
ตัวอย่าง
# นำเข้าโมดูล
import sqlite3
# สร้างการเชื่อมต่อ
conn = sqlite3.connect("tutorialspoint.db")
# Cursor object
cursor = conn.cursor()
ตอนนี้เรามีการเชื่อมต่อกับ database แล้ว มาสร้างตารางด้วยคำสั่ง SQL
- เขียนโค้ด SQL สร้างตารางพร้อมชื่อคอลัมน์และชนิดข้อมูล
- รันโค้ดด้วย cursor.execute() เพื่อสร้างตารางใน database
- เขียน SQL insert ข้อมูลลงตาราง รันคล้ายข้างต้น
- Commit การเปลี่ยนแปลงด้วย conn.commit()
- ปิดการเชื่อมต่อด้วย conn.close()
ตัวอย่าง
# นำเข้าโมดูล
import sqlite3
# สร้างการเชื่อมต่อ
conn = sqlite3.connect("tutorialspoint.db")
# Cursor object
cursor = conn.cursor()
# SQL สร้างตาราง
create_table_sql = """
CREATE TABLE students (
id INTEGER PRIMARY KEY,
first_name VARCHAR(20),
last_name VARCHAR(30),
gender CHAR(1)
);
"""
# รัน SQL
cursor.execute(create_table_sql)
# Insert ข้อมูล
insert_student_one_sql = """INSERT INTO students VALUES (1, "John", "Hill", "M")"""
cursor.execute(insert_student_one_sql)
insert_student_two_sql = """INSERT INTO students VALUES (2, "Jessy", "Hill", "F")"""
cursor.execute(insert_student_two_sql)
insert_student_three_sql = """INSERT INTO students VALUES (3, "Antony", "Hill", "M")"""
cursor.execute(insert_student_three_sql)
# Commit
conn.commit()
# ปิดการเชื่อมต่อ
conn.close()
หากไม่มี error หลังรันโค้ดข้างต้น แสดงว่าเสร็จแล้ว ดูข้อมูลในตารางอย่างไร? เขียนโค้ดตามขั้นตอน
- เชื่อมต่อ database
- สร้าง cursor object
- เขียน SQL query ดึงข้อมูลที่ต้องการ
- รัน query
- ดึงข้อมูลจาก cursor ด้วย fetchall()
- พิมพ์ดูข้อมูล
ตัวอย่าง
# นำเข้าโมดูล
import sqlite3
# สร้างการเชื่อมต่อ
conn = sqlite3.connect("tutorialspoint.db")
# Cursor object
cursor = conn.cursor()
# SQL query ดึงข้อมูลนักเรียนทั้งหมด
fetch_students_sql = """SELECT * FROM students;"""
# รัน SQL query
cursor.execute(fetch_students_sql)
# เก็บข้อมูลในตัวแปรด้วย fetchall()
students = cursor.fetchall() # list of tuples
# พิมพ์ข้อมูล
print(students)
ผลลัพธ์
การรันโค้ดข้างต้นจะได้ผลลัพธ์ดังนี้
[(1, 'John', 'Hill', 'M'), (2, 'Jessy', 'Hill', 'F'), (3, 'Antony', 'Hill', 'M')]
สรุป
ตอนนี้คุณพร้อมทำงานกับ database ใน Python แล้ว ลองฝึกเพิ่มเติม หากมีข้อสงสัย กรุณาแจ้งในส่วนความคิดเห็น