21 ธันวาคม 2557

Published ธันวาคม 21, 2557 by with 5 comments

เชื่อมต่อกับฐานข้อมูล SQLite ใน Python 3

สวัสดีทุกท่านครับ บทความนี้จะพาผู้อ่านไปเชื่อมต่อกับฐานข้อมูล SQLite ใน Python 3 กันครับ
การเรียกใช้ฐานข้อมูล SQLite ใน Python 3 เราต้องเรียกใช้โมดูลมาตรฐาน sqlite3 ด้วยการ import เข้ามา
import sqlite3
ในการเชื่อมต่อฐานข้อมูลเราจะใช้คำสั่ง
sqlite3.connect(database [,timeout ,other optional arguments])
หากต้องการ cursor ฐานข้อมูลใช้คำสั่ง
connection.cursor([cursorClass])
รันคำสั่ง SQL กับฐานข้อมูล SQLite ใช้คำสั่ง
cursor.execute(คำสั่ง sql [, optional parameters])
fetchall ใช้คำสั่ง
cursor.fetchall()

หลังเพิ่มลบแก้ไข ให้

connection.commit()

ปิดการเชื่อมต่อกับฐานข้อมูล SQLite
connection.close()
เรามาเริ่มลองเขียนโปรแกรมกันครับ

เปิดฐานข้อมูล SQLite ใน Python 3

#!/usr/bin/python

import sqlite3
conn = sqlite3.connect('1.db')
print("เปิดฐานข้อมูลสำเร็จ")
ผลลัพธ์
เปิดฐานข้อมูลสำเร็จ
และจะได้ไฟล์ฐานข้อมูล 1.db


สร้างตารางฐานข้อมูล SQLite ใน Python 3

#!/usr/bin/python

import sqlite3
conn = sqlite3.connect('1.db')
print("เปิดฐานข้อมูลสำเร็จ")
conn.execute('''CREATE TABLE SAVEONE
       (ID INT PRIMARY KEY     NOT NULL,
       NAME           TEXT    NOT NULL,
       MESSENGE        CHAR(150));''')
print("สร้างตารางสำเร็จ :D ")
conn.close() 
ผลลัพธ์
เปิดฐานข้อมูลสำเร็จ
สร้างตารางสำเร็จ :D

เพิ่มข้อมูล INSERT ลงไปฐานข้อมูล SQLite ใน Python 3

#!/usr/bin/python

import sqlite3
conn = sqlite3.connect('1.db')
print("เปิดฐานข้อมูลสำเร็จ")
conn.execute("INSERT INTO SAVEONE (ID,NAME,MESSENGE ) \
      VALUES (1, 'ต้นตาล','ทดสอบระบบ :D ')")
conn.execute("INSERT INTO SAVEONE (ID,NAME,MESSENGE ) \
      VALUES (2, 'วรรณพงษ์','ทดสอบระบบ ครับ  :D ')")
conn.commit()
print("เพิ่มระเบียงข้อมูลสำเร็จ")
conn.close() 
ผลลัพธ์
เปิดฐานข้อมูลสำเร็จ
เพิ่มระเบียงข้อมูลสำเร็จ

อ่านข้อมูลด้วยการเลือกตาราง (SELECT)  กับฐานข้อมูล SQLite ใน Python 3

#!/usr/bin/python

import sqlite3
conn = sqlite3.connect('1.db')
print("เปิดฐานข้อมูลสำเร็จ")
cursor = conn.execute("SELECT ID,NAME,MESSENGE  from SAVEONE")
for row in cursor:
   print("ID = ", row[0])
   print("NAME = ", row[1])
   print("MESSENGE = ", row[2])
print("ดำเนินการเสร็จสิ้น")
conn.close()
ผลลัพธ์
เปิดฐานข้อมูลสำเร็จ
ID = 1
NAME = ต้นตาล
MESSENGE =  ทดสอบระบบ :D

ID = 2
NAME = วรรณพงษ์
MESSENGE =  ทดสอบระบบ ครับ  :D

ดำเนินการเสร็จสิ้น

fetchall ฐานข้อมูล

import sqlite3
import sys
conn = sqlite3.connect('1.db')
with conn:    
    cur = conn.cursor()    
    cur.execute("SELECT * FROM SAVEONE")
    rows = cur.fetchall()
    for row in rows:
        print(row)
input()
ผลลัพธ์
(1, 'ต้นตาล','ทดสอบระบบ :D ')
(2, 'วรรณพงษ์','ทดสอบระบบ ครับ  :D ')


อัปเดรตข้อมูลใหม่โดยใช้คำสั่ง UPDATE กับฐานข้อมูล SQLite ใน Python 3

#!/usr/bin/python

import sqlite3
conn = sqlite3.connect('1.db')
print("เปิดฐานข้อมูลสำเร็จ")
conn.execute("UPDATE SAVEONE set NAME = 'HI' where ID=1")
conn.commit()
print("แถวที่อัปเดรตข้อมูลใหม่ :", conn.total_changes)
cursor = conn.execute("SELECT ID,NAME,MESSENGE  from SAVEONE")
for row in cursor:
   print("ID = ", row[0])
   print("NAME = ", row[1])
   print("MESSENGE = ", row[2])
print("ดำเนินการเสร็จสิ้น")
conn.close()
input()
ผลลัพธ์
เปิดฐานข้อมูลสำเร็จ
แถวที่อัปเดรตข้อมูลใหม่ : 1
ID = 1
NAME = HI
MESSENGE =  ทดสอบระบบ :D

ID = 2
NAME = วรรณพงษ์
MESSENGE =  ทดสอบระบบ ครับ  :D

ดำเนินการเสร็จสิ้น 

ลบข้อมูล (DELETE)  กับฐานข้อมูล SQLite ใน Python 3

#!/usr/bin/python

import sqlite3
conn = sqlite3.connect('1.db')
print("เปิดฐานข้อมูลสำเร็จ")
conn.execute("DELETE from SAVEONE where ID=2;")
conn.commit()
print("แถวที่ถูกลบ :", conn.total_changes)
cursor = conn.execute("SELECT ID,NAME,MESSENGE  from SAVEONE")
for row in cursor:
   print("ID = ", row[0])
   print("NAME = ", row[1])
   print("MESSENGE = ", row[2])
print("ดำเนินการเสร็จสิ้น")
conn.close()
input()
ผลลัพธ์
เปิดฐานข้อมูลสำเร็จ
แถวที่ถูกลบ : 2
ID = 1
NAME = HI
MESSENGE =  ทดสอบระบบ :D

ดำเนินการเสร็จสิ้น

โหลดโค้ดตัวอย่างได้ที่ http://bit.ly/1DXJIOz
อ่านรายละเอียดเพิ่มเติมได้ที่ https://docs.python.org/3/library/sqlite3.html
ติดตามบทความต่อไปนะครับ
ขอบคุณครับ

5 ความคิดเห็น:

  1. ขอถามได้ใหมเราศึกษาเรื่องนี้อยู่
    เราลอง run code ข้างล่างนี้ ตั้งใจจะให้มัน ดึงข้อมูลจาก db sqlite3 ออกมา(โชว์ได้แล้ว)
    และนำตัวเลขไปคำนวณต่อ ปรากฎผลลัพธ์ว่า มันคำนวณต่อไม่ได้ฮะ
    เราควรแก้อย่างไรดี
    https://www.mindphp.com/forums/viewtopic.php?f=16&t=52911&fbclid=IwAR1VCrbi57HKh_cS7d-3SDdBI8Grar2nlmCaLD2xiXxNeearjd8iSmRtaSc

    ตอบลบ
    คำตอบ
    1. เติม int/float แปลงให้เป็นตัวเลขครับ

      ลบ
  2. ไม่ระบุชื่อ10 กันยายน 2563 เวลา 16:55

    ในส่วนของ conn.commit น่าจะต้องเป็น conn.commit() หรือเปล่าครับ

    ตอบลบ
  3. conn.execute("INSERT INTO SAVEONE (ID,NAME,MESSENGE ) \
    VALUES (1, 'ต้นตาล','ทดสอบระบบ :D ')")
    ตรงเลข ID เราสามรถทำให้มันรันไปเองได้มั้ยครับ

    ตอบลบ

แสดงความคิดเห็นได้ครับ :)