บทที่ 9: การติดต่อฐานข้อมูลเบื้องต้น

9.3 การใช้ Library sqlite3 ในการเชื่อมต่อและทำงานกับฐานข้อมูล

Library sqlite3 เป็นLibraryมาตรฐานใน Python ที่ช่วยให้เราสามารถเชื่อมต่อและทำงานกับฐานข้อมูล SQLite ได้อย่างง่ายดาย ในบทนี้เราจะมาดูวิธีการใช้Libraryนี้ในการเชื่อมต่อกับฐานข้อมูล, สร้างตาราง, เพิ่มข้อมูล, และดึงข้อมูลจากฐานข้อมูล SQLite เพื่อให้เข้าใจถึงกระบวนการทำงานกับฐานข้อมูลผ่าน Python ได้อย่างชัดเจน

1. การติดตั้ง Library sqlite3

ใน Python เราไม่จำเป็นต้องติดตั้ง Library sqlite3 เพิ่มเติม เพราะเป็น Library ที่มีมาพร้อมกับ Python แล้ว เราสามารถเรียกใช้งานได้ทันทีโดยการ import sqlite3

2. การเชื่อมต่อกับฐานข้อมูล

การเริ่มต้นใช้งาน sqlite3 ใน Python จะต้องสร้างการเชื่อมต่อกับฐานข้อมูล โดยใช้ฟังก์ชัน sqlite3.connect() ซึ่งสามารถสร้างฐานข้อมูลใหม่หรือเชื่อมต่อกับฐานข้อมูลที่มีอยู่แล้ว

ตัวอย่างการเชื่อมต่อกับฐานข้อมูล

import sqlite3

# สร้างหรือเชื่อมต่อกับฐานข้อมูล mydatabase.db
conn = sqlite3.connect('mydatabase.db')

# สร้างตัวจัดการคำสั่ง SQL (Cursor)
cursor = conn.cursor()

print("Connected to SQLite successfully")
อธิบาย: โค้ดนี้จะเชื่อมต่อกับฐานข้อมูลชื่อ mydatabase.db ถ้าไฟล์ฐานข้อมูลยังไม่มีอยู่ Python จะสร้างฐานข้อมูลใหม่ให้ การเชื่อมต่อนี้เป็นขั้นตอนแรกที่จำเป็นต้องทำทุกครั้งเมื่อเราต้องการทำงานกับฐานข้อมูล

3. การสร้างตารางในฐานข้อมูล

หลังจากที่เราเชื่อมต่อกับฐานข้อมูลเรียบร้อยแล้ว ขั้นตอนถัดไปคือการสร้างตาราง (Table) เพื่อจัดเก็บข้อมูล ตารางนี้จะประกอบด้วยคอลัมน์ที่กำหนดประเภทและขอบเขตของข้อมูลที่ต้องการเก็บ

ตัวอย่างการสร้างตาราง

# สร้างตาราง customers หากยังไม่มี
cursor.execute('''CREATE TABLE IF NOT EXISTS customers (
                    id INTEGER PRIMARY KEY AUTOINCREMENT,
                    name TEXT NOT NULL,
                    age INTEGER,
                    email TEXT)''')

# บันทึกการเปลี่ยนแปลง
conn.commit()

print("Table created successfully")
อธิบาย: ตาราง customers มี 4 คอลัมน์ ได้แก่ id, name, age, และ email โดยคอลัมน์ id ถูกกำหนดเป็น primary key และจะเพิ่มค่าอัตโนมัติในทุกแถวที่ถูกเพิ่มเข้าไป

4. การเพิ่มข้อมูลลงในฐานข้อมูล

เมื่อเรามีตารางพร้อมแล้ว เราสามารถเพิ่มข้อมูลลงในฐานข้อมูลได้โดยใช้คำสั่ง SQL INSERT INTO เพื่อเพิ่มแถวข้อมูลใหม่เข้าไปในตาราง

ตัวอย่างการเพิ่มข้อมูล

# เพิ่มข้อมูลลูกค้าใหม่ลงในตาราง customers
cursor.execute('''INSERT INTO customers (name, age, email)
                  VALUES (?, ?, ?)''', ("John Doe", 28, "This email address is being protected from spambots. You need JavaScript enabled to view it."))

# บันทึกการเปลี่ยนแปลง
conn.commit()

print("Data inserted successfully")
อธิบาย: ฟังก์ชัน execute() จะนำข้อมูลชื่อ "John Doe", อายุ 28 ปี, และอีเมล This email address is being protected from spambots. You need JavaScript enabled to view it. ใส่ลงในตาราง customers การใช้ ? เป็นตัวแทนสำหรับค่าที่จะถูกใส่เข้าไปในคำสั่ง SQL เพื่อป้องกันการโจมตีแบบ SQL Injection

5. การดึงข้อมูลจากฐานข้อมูล

เราสามารถดึงข้อมูลจากฐานข้อมูลได้โดยใช้คำสั่ง SQL SELECT เพื่อดึงข้อมูลที่ต้องการ เช่น ดึงข้อมูลทั้งหมดจากตาราง หรือดึงเฉพาะข้อมูลบางส่วนที่ตรงตามเงื่อนไข

ตัวอย่างการดึงข้อมูล

# ดึงข้อมูลทั้งหมดจากตาราง customers
cursor.execute("SELECT * FROM customers")

# รับข้อมูลที่ดึงมา
customers = cursor.fetchall()

# แสดงข้อมูล
for customer in customers:
    print(customer)

อธิบาย: ฟังก์ชัน fetchall() จะดึงข้อมูลทั้งหมดจากผลลัพธ์ของคำสั่ง SELECT และเก็บไว้ในตัวแปร customers ซึ่งเราสามารถวนลูปเพื่อแสดงผลข้อมูลแต่ละแถวได้

6. การอัปเดตข้อมูลในฐานข้อมูล

หากเราต้องการแก้ไขข้อมูลในฐานข้อมูลที่มีอยู่แล้ว เราสามารถใช้คำสั่ง SQL UPDATE เพื่อทำการอัปเดตข้อมูลตามเงื่อนไขที่กำหนด

ตัวอย่างการอัปเดตข้อมูล

# อัปเดตอายุของลูกค้าที่ชื่อ John Doe
cursor.execute('''UPDATE customers
                  SET age = ?
                  WHERE name = ?''', (30, "John Doe"))

# บันทึกการเปลี่ยนแปลง
conn.commit()

print("Data updated successfully")
อธิบาย: โค้ดนี้ทำการอัปเดตอายุของลูกค้าที่ชื่อ "John Doe" ให้เป็น 30 ปี โดยใช้คำสั่ง UPDATE

7. การลบข้อมูลจากฐานข้อมูล

เราสามารถลบข้อมูลออกจากตารางโดยใช้คำสั่ง SQL DELETE ซึ่งจะลบแถวที่ตรงกับเงื่อนไขที่กำหนด

ตัวอย่างการลบข้อมูล

# ลบข้อมูลของลูกค้าที่ชื่อ John Doe
cursor.execute('''DELETE FROM customers
                  WHERE name = ?''', ("John Doe",))

# บันทึกการเปลี่ยนแปลง
conn.commit()

print("Data deleted successfully")
อธิบาย: โค้ดนี้ลบข้อมูลของลูกค้าที่ชื่อ "John Doe" ออกจากตาราง customers โดยใช้คำสั่ง DELETE

8. การปิดการเชื่อมต่อกับฐานข้อมูล

หลังจากที่เราทำงานกับฐานข้อมูลเสร็จแล้ว เราควรปิดการเชื่อมต่อด้วยคำสั่ง close() เพื่อให้ระบบจัดการทรัพยากรได้อย่างเหมาะสม

ตัวอย่างการปิดการเชื่อมต่อ

# ปิดการเชื่อมต่อกับฐานข้อมูล
conn.close()

print("Connection closed successfully")
อธิบาย: ฟังก์ชัน close() จะปิดการเชื่อมต่อกับฐานข้อมูล ซึ่งเป็นขั้นตอนสุดท้ายหลังจากที่เราทำงานกับฐานข้อมูลเสร็จเรียบร้อยแล้ว

สรุป

การใช้ Library sqlite3 ในการเชื่อมต่อและทำงานกับฐานข้อมูล SQLite เป็นวิธีที่ง่ายและทรงพลังในการจัดการข้อมูล Python ทำให้การสร้างตาราง, การเพิ่ม, อัปเดต, ลบ, และดึงข้อมูลทำได้อย่างสะดวกและมีประสิทธิภาพ Libraryนี้เหมาะสำหรับการสร้างแอปพลิเคชันขนาดเล็กไปจนถึงการใช้งานที่ซับซ้อนขึ้นในระบบข้อมูลขนาดใหญ่