Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

Python SQLite3: เชื่อมต่อและจัดการฐานข้อมูล SQLite ด้วย Python

SQLite เป็นฐานข้อมูล Open Source แบบ Serverless ไม่ต้องตั้งค่า ทั้งฐานข้อมูลเป็นไฟล์เดียว วางไว้ที่ไหนใน File System ก็ได้ ใช้กันทั่วไปใน Browser, Embedded Devices

Python Standard Library มีโมดูล sqlite3 (DB-API 2.0 compliant) รองรับ PEP-249

ขั้นตอนพื้นฐาน

  1. สร้าง Connection: conn = sqlite3.connect('mydb.sqlite3') หรือ ':memory:' สำหรับ In-memory DB
  2. สร้าง Cursor: cur = conn.cursor()
  3. Execute SQL: cur.execute(sql) หรือ cur.executemany(sql, params)
  4. Commit/Rollback: conn.commit() / conn.rollback()
  5. Fetch ผลลัพธ์: fetchone() หรือ fetchall()

เมธอดสำคัญของ Connection

  • cursor() - สร้าง Cursor
  • commit() - ยืนยัน Transaction
  • rollback() - ย้อนกลับ Transaction
  • iterdump() - สร้าง SQL Dump
  • backup() - สำรองฐานข้อมูลขณะใช้งาน
  • create_function(), create_aggregate() - ฟังก์ชันผู้ใช้

การ Map ชนิดข้อมูล

PythonSQLite
NoneNULL
intINTEGER
floatREAL
strTEXT
bytesBLOB

Exception หลัก

  • DatabaseError - ข้อผิดพลาดทั่วไปของ DB
  • IntegrityError - ละเมิด 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()