การเรียกใช้ฐานข้อมูล 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
ติดตามบทความต่อไปนะครับ
ขอบคุณครับ

ขอถามได้ใหมเราศึกษาเรื่องนี้อยู่
ตอบลบเราลอง run code ข้างล่างนี้ ตั้งใจจะให้มัน ดึงข้อมูลจาก db sqlite3 ออกมา(โชว์ได้แล้ว)
และนำตัวเลขไปคำนวณต่อ ปรากฎผลลัพธ์ว่า มันคำนวณต่อไม่ได้ฮะ
เราควรแก้อย่างไรดี
https://www.mindphp.com/forums/viewtopic.php?f=16&t=52911&fbclid=IwAR1VCrbi57HKh_cS7d-3SDdBI8Grar2nlmCaLD2xiXxNeearjd8iSmRtaSc
เติม int/float แปลงให้เป็นตัวเลขครับ
ลบในส่วนของ conn.commit น่าจะต้องเป็น conn.commit() หรือเปล่าครับ
ตอบลบแก้ไขแล้วครับ ขอบคุณครับ
ลบconn.execute("INSERT INTO SAVEONE (ID,NAME,MESSENGE ) \
ตอบลบVALUES (1, 'ต้นตาล','ทดสอบระบบ :D ')")
ตรงเลข ID เราสามรถทำให้มันรันไปเองได้มั้ยครับ