SQLite เป็นฐานข้อมูล Open Source แบบ Serverless ไม่ต้องตั้งค่า ทั้งฐานข้อมูลเป็นไฟล์เดียว วางไว้ที่ไหนใน File System ก็ได้ ใช้กันทั่วไปใน Browser, Embedded Devices
Python Standard Library มีโมดูล sqlite3 (DB-API 2.0 compliant) รองรับ PEP-249
ขั้นตอนพื้นฐาน
- สร้าง Connection:
conn = sqlite3.connect('mydb.sqlite3')หรือ':memory:'สำหรับ In-memory DB - สร้าง Cursor:
cur = conn.cursor() - Execute SQL:
cur.execute(sql)หรือcur.executemany(sql, params) - Commit/Rollback:
conn.commit()/conn.rollback() - Fetch ผลลัพธ์:
fetchone()หรือfetchall()
เมธอดสำคัญของ Connection
cursor()- สร้าง Cursorcommit()- ยืนยัน Transactionrollback()- ย้อนกลับ Transactioniterdump()- สร้าง SQL Dumpbackup()- สำรองฐานข้อมูลขณะใช้งานcreate_function(),create_aggregate()- ฟังก์ชันผู้ใช้
การ Map ชนิดข้อมูล
| Python | SQLite |
|---|---|
| None | NULL |
| int | INTEGER |
| float | REAL |
| str | TEXT |
| bytes | BLOB |
Exception หลัก
DatabaseError- ข้อผิดพลาดทั่วไปของ DBIntegrityError- ละเมิด Constraint (FK, Unique)ProgrammingError- ข้อผิดพลาดโปรแกรม (Syntax, Table not found)OperationalError- ปัญหาการทำงาน (Lock, Disk full)NotSupportedError- ฟีเจอร์ไม่รองรับ
ตัวอย่างโค้ดครบ
import sqlite3
conn = sqlite3.connect('mydb.sqlite3')
cur = conn.cursor()
cur.execute("""CREATE TABLE guests (
ID INTEGER PRIMARY KEY,
name TEXT(20) NOT NULL,
address TEXT(40),
city TEXT(20)
)""")
cur.execute("INSERT INTO guests VALUES (1, 'RAJU', 'ABIDS', 'HYDERABAD')")
addresses = [(2, 'KISHAN', 'TILAK ROAD', 'PUNE'),
(3, 'LATA', 'GAANDHI NAGAR', 'AURANGABAD')]
cur.executemany("INSERT INTO guests VALUES (:ID, :NAME, :ADD, :CITY)", addresses)
conn.commit()
cur.execute("SELECT * FROM guests")
for row in cur.fetchall():
print(row)
conn.close()