SQLite ด้วยโมดูล sqlite3 ของ Python
สร้างฐานข้อมูลและตาราง ใช้ INSERT/SELECT/UPDATE คำสั่งสืบค้นแบบกำหนดพารามิเตอร์ และจัดการการเชื่อมต่อ
SQLite ด้วยโมดูล sqlite3 ของ Python เป็นบทเรียน Learn AI with Python ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Learn AI with Python และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Learn AI with Python มีบทเรียนทั้งหมด 4 บทเรียน
ทำไมต้องใช้ฐานข้อมูลสำหรับปัญญาประดิษฐ์
ไฟล์แบบแบนใช้งานได้จนกว่าข้อมูลจะมีขนาดใหญ่ขึ้น หรือจนกว่าส่วนต่าง ๆ ของโครงการจะต้องใช้ระเบียนเดียวกัน ฐานข้อมูลช่วยให้คุณสืบค้นได้รวดเร็ว มีโครงสร้างฐานข้อมูลที่เป็นระเบียบ และเข้าถึงข้อมูลพร้อมกันได้อย่างปลอดภัย
SQLite เป็นฐานข้อมูลที่ใช้ไฟล์และไม่ต้องตั้งค่า ซึ่งรวมอยู่ใน Python ผ่านโมดูล sqlite3 เหมาะอย่างยิ่งสำหรับการทดลองด้านปัญญาประดิษฐ์และโครงการขนาดเล็ก
การเชื่อมต่อด้วย sqlite3.connect
sqlite3.connect จะเปิดหรือสร้างไฟล์ฐานข้อมูล และส่งคืนการเชื่อมต่อ ใช้ :memory: สำหรับฐานข้อมูลชั่วคราวในหน่วยความจำ
import sqlite3
conn = sqlite3.connect("ml.db") # creates ml.db if missing
print(conn)เคอร์เซอร์และ cursor.execute
คุณเรียกใช้ SQL ผ่าน cursor ที่ได้จากการเชื่อมต่อ cursor.execute(sql) จะส่งคำสั่งไปยังฐานข้อมูล
import sqlite3
conn = sqlite3.connect("ml.db")
cur = conn.cursor()
cur.execute("SELECT sqlite_version()")
print(cur.fetchone())CREATE TABLE IF NOT EXISTS
กำหนดตารางด้วยโครงสร้างฐานข้อมูล IF NOT EXISTS ทำให้สามารถเรียกใช้คำสั่งซ้ำได้อย่างปลอดภัย โดยจะไม่เกิดข้อผิดพลาดหากมีตารางนั้นอยู่แล้ว
cur.execute("""
CREATE TABLE IF NOT EXISTS experiments (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
accuracy REAL,
created_at TEXT
)
""")INSERT พร้อมตัวแทนค่า
อย่าสร้าง SQL ด้วยการจัดรูปแบบสตริง เพราะจะเปิดช่องให้เกิดการแทรก SQL และทำงานผิดพลาดเมื่อมีเครื่องหมายอัญประกาศ ให้ใช้ตัวแทนค่า ? และส่งค่าในรูปทูเพิล
cur.execute(
"INSERT INTO experiments (name, accuracy, created_at) VALUES (?, ?, ?)",
("baseline", 0.82, "2026-05-29"),
)การแทรกหลายแถวด้วย executemany
executemany จะแทรกรายการทูเพิลทั้งหมดด้วยการเรียกใช้ที่มีประสิทธิภาพเพียงครั้งเดียว ซึ่งเร็วกว่าการวนลูปเรียก execute มาก
rows = [
("rf", 0.88, "2026-05-29"),
("xgb", 0.91, "2026-05-29"),
]
cur.executemany(
"INSERT INTO experiments (name, accuracy, created_at) VALUES (?, ?, ?)",
rows,
)conn.commit() บันทึกการเปลี่ยนแปลง
การเขียนข้อมูลจะเกิดขึ้นภายในธุรกรรม และจะยังไม่ถูกบันทึกถาวรจนกว่าคุณจะเรียกใช้ conn.commit() การลืมเรียกใช้คำสั่งนี้เป็นข้อผิดพลาดที่ผู้เริ่มต้นพบได้บ่อยที่สุด เพราะข้อมูลจะหายไปอย่างเงียบ ๆ เมื่อปิดการเชื่อมต่อ
conn.commit() # persist all pending INSERT/UPDATE/DELETEการสืบค้นด้วย fetchall และ fetchone
หลังจากใช้ SELECT ให้ดึงผลลัพธ์ดังนี้:
fetchone()— แถวถัดไปหนึ่งแถวfetchall()— แถวที่เหลือทั้งหมดในรูปแบบรายการทูเพิล- วนซ้ำผ่าน cursor โดยตรงเมื่อผลลัพธ์มีขนาดใหญ่
cur.execute("SELECT name, accuracy FROM experiments")
for row in cur.fetchall():
print(row) # ("baseline", 0.82) ...การกรองและการจัดเรียง
ให้ SQL จัดการงานหลัก: กรองด้วย WHERE เรียงลำดับด้วย ORDER BY และจำกัดจำนวนด้วย LIMIT ใช้ตัวแทนค่าสำหรับค่าที่ใช้ในการสืบค้นด้วย
cur.execute(
"SELECT name, accuracy FROM experiments WHERE accuracy > ? ORDER BY accuracy DESC LIMIT 3",
(0.85,),
)
print(cur.fetchall())โรงงานแถวสำหรับการเข้าถึงด้วยชื่อ
โดยค่าเริ่มต้น แถวจะอยู่ในรูปทูเพิล ตั้งค่า conn.row_factory = sqlite3.Row เพื่อเข้าถึงคอลัมน์ด้วยชื่อ ซึ่งอ่านเข้าใจได้ง่ายกว่ามาก
import sqlite3
conn = sqlite3.connect("ml.db")
conn.row_factory = sqlite3.Row
cur = conn.cursor()
cur.execute("SELECT * FROM experiments")
row = cur.fetchone()
print(row["name"], row["accuracy"])ตัวจัดการบริบทเพื่อความปลอดภัย
การใช้ with กับการเชื่อมต่อจะยืนยันธุรกรรมโดยอัตโนมัติเมื่อสำเร็จ และย้อนกลับธุรกรรมเมื่อเกิดข้อผิดพลาด เมื่อใช้ร่วมกับ closing จะรับรองว่ามีการทำความสะอาดทรัพยากร
import sqlite3
from contextlib import closing
with closing(sqlite3.connect("ml.db")) as conn:
with conn: # auto commit/rollback
conn.execute(
"INSERT INTO experiments (name, accuracy) VALUES (?, ?)",
("svm", 0.79),
)ตรวจสอบอย่างรวดเร็ว: การบันทึกการเขียนข้อมูลถาวร
คุณเรียกใช้คำสั่ง INSERT หลายคำสั่ง จากนั้นปิดการเชื่อมต่อ แต่ครั้งถัดไปข้อมูลกลับหายไป
ทบทวน: SQLite ด้วย sqlite3
ขณะนี้คุณสามารถใช้ฐานข้อมูลจริงจาก Python ได้แล้ว:
sqlite3.connectและcursorCREATE TABLE IF NOT EXISTSสำหรับโครงสร้างฐานข้อมูลที่ปลอดภัยINSERTพร้อมตัวแทนค่า?และexecutemanyconn.commit()เพื่อบันทึกการเขียนข้อมูลถาวรfetchone/fetchall,WHERE/ORDER BY/LIMITsqlite3.Rowและตัวจัดการบริบทเพื่อโค้ดที่เป็นระเบียบและปลอดภัย
ถัดไป: เชื่อม pandas เข้ากับ SQL
คำถามที่พบบ่อย
บทเรียน “SQLite ด้วยโมดูล sqlite3 ของ Python” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “SQLite ด้วยโมดูล sqlite3 ของ Python” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Learn AI with Python ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Learn AI with Python มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “SQLite ด้วยโมดูล sqlite3 ของ Python”
สร้างฐานข้อมูลและตาราง ใช้ INSERT/SELECT/UPDATE คำสั่งสืบค้นแบบกำหนดพารามิเตอร์ และจัดการการเชื่อมต่อ คุณปฏิบัติ Learn AI with Python ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Learn AI with Python หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Learn AI with Python บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “SQLite ด้วยโมดูล sqlite3 ของ Python” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Learn AI with Python นี้ได้ไหม
ได้ บทเรียน Learn AI with Python ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- SQLite ด้วยโมดูล sqlite3 ของ Python
- การผสาน Pandas และ SQL
- การจัดเก็บและสืบค้นผลลัพธ์แมชชีนเลิร์นนิง
- บทนำสู่ฐานข้อมูลเวกเตอร์