การเรียกใช้ฐานข้อมูล 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 เราสามรถทำให้มันรันไปเองได้มั้ยครับ