<< Go Back

ภาษา Python มีช่องทางในการเชื่อมโยงกับฐานข้อมูล 2 แบบ คือ
1. การเชื่อมโยงกับฐานข้อมูลผ่านไลบรารีมาตรฐานประเภท DBM (Database Manager) เหมาะกับข้อมูลที่ไม่มีความซับซ้อนมาก เช่น ข้อมูลมีเพียง 1 ตาราง เป็นต้น
2. การเชื่อมโยงฐานข้อมูลผ่านไลบรารีมาตรฐาน DB-API 2.0 เหมาะกับฐานข้อมูลประเภท RDBMS (Relational Database Management System) เช่น Oracle, MySQL หรือ MS SQL Server เป็นต้น

1. ตาราง (Table) สำหรับจัดเก็บกลุ่มข้อมูล เช่น ตารางลูกค้า ภายในตารางจะเป็นข้อมูลของลูกค้าทั้งหมด ตารางสินค้า จะเก็บกลุ่มรายละเอียดสินค้าแต่ละรายการไว้ในตารางสินค้าเท่านั้น
2. เรคอร์ด (Record) บางครั้งเรียกว่า Row รายละเอียดข้อมูลแต่ละรายการ เช่น เรคอร์ดของลูกค้าคนที่ 1 มีรายละเอียดดังนี้ คือ รหัส, ชื่อ, นามสกุล, ที่อยู่, เบอร์โทร, อีเมล์ หรือเรคอร์ดของสินค้าชิ้นที่ 1 จะมีรายละเอียดดังนี้ คือ รหัสสินค้า, ชื่อ, ยี่ห้อ, รุ่น, หมายเลขเครื่อง, สีสินค้า เป็นต้น
3. ฟิลด์ (Field) หรือบางครั้งเรียกว่า คอลัมน์ (Column) เป็นองค์ประกอบของเรคอร์ด เช่น เรคอร์ดของลุกค้าคนที่ 1 มีการเก็บรายละเอียด 6 รายการต่อการบันทึก 1 เรคอร์ด ภายในรายละเอียด 6 รายการดังกล่าว ประกอบด้วย รหัส, ชื่อ, นามสกุล, ที่อยู่, เบอร์โทร, อีเมล์ ซึ่งทุกรายการย่อยที่ยกตัวอย่างก็คือ Field ย่อยภายในเรคอร์ดนั่นเอง

ที่มาของภาพ : https://www.9experttraining.com

เป็นพื้นฐานการจัดเก็บข้อมูลเป็นไฟล์ Text หรือ Binary เหมาะกับข้อมูลขนาดเล็กจนถึงขนาดกลาง ไฟล์ชนิดนี้จะมีความจุที่ไม่จำกัด ขึ้นอยู่กับปริมาณของข้อมูลที่จัดเก็บ เมื่อเทียบกับอีก 2 ประเภท ไฟล์ฐานข้อมูลประเภทนี้จะมีความจุไฟล์น้อยที่สุด อีกทั้งยังง่ายต่อการสร้าง ค่าใช้จ่ายน้อย สามารถใช้งานร่วมกับโปรแกรม Spreadsheet ได้ แต่ข้อด้อยคือความเร็วในการเรียกใช้งานข้อมูล ยิ่งมีข้อมูลมาก ความเร็วในการค้นหาหรือดึงข้อมูลมาใช้ก็จะทำงานได้ช้า สำหรับภาษา Python สามารถใช้คำสั่งในการสร้าง อ่าน เขียนค่าข้อมูลที่ต้องการจัดเก็บในไฟล์ฐานข้อมูลประเภทนี้ได้

โปรแกรมจะทำการสร้างไฟล์ datatest.txt ขึ้นมาหน้า Desktop แล้วให้รับค่าการป้อนชื่อสินค้าและราคาสินค้าในหน้าต่าง Python Shell ไปเรื่อยๆ จนกว่าจะพิมพ์ exit ในช่องป้อนชื่อสินค้าและป้อนราคาสินค้า ข้อมูลชื่อสินค้าและราคาสินค้าจะถูกจัดเก็บในไฟล์ datatest.txt โดยอัตโนมัติ
- เขียนคำสั่ง Python


- ป้อนชื่อสินค้าและราคาสินค้าในหน้าต่าง Python Shell

- เปิดไฟล์ datatest.txt บนหน้า Desktop จะมีข้อมูลดังนี้

จากตัวอย่าง ให้ลองรันโปรแกรมอีกครั้ง เมื่อเราป้อนข้อมูลชื่อสินค้าและราคาสินค้าใหม่เข้าไป ข้อมูลใหม่นี้จะไปทับข้อมูลเดิม ทำให้ข้อมูลเดิมหายไป เพราะจากคำสั่งในบรรทัดที่ 2 คือ fdata = open('C:\\Users\OFFBKK\Desktop\datatest.txt', 'w') จะพบว่าเมื่อใช้อาร์กิวเมนต์ตัวอักษร 'w' จะทำให้ข้อมูลใหม่ไปทับข้อมูลเดิม หากต้องการเพิ่มข้อมูลเข้าไป โดยไม่ให้ข้อมูลเดิมสูญหาย ต้องเปลี่ยนจาก 'w' เป็น 'a'

ค่าคงที่สำหรับใช้งานกับอาร์กิวเมนต์ ลักษณะการทำงานร่วมกับคำสั่ง open
a สร้างไฟล์หรือแก้ไขข้อมูลแบบเพิ่มเติม
w สร้างไฟล์หรือแก้ไขข้อมูลแบบทับซ้ำ
r อ่านข้อมูลในไฟล์ที่กำลังเปิดใช้งาน

จากตัวอย่างที่ 1 ประกาศตัวแปร lineno เพื่อใช้เก็บจำนวนครั้งในการป้อนข้อมูล โดยมีค่าเริ่มต้นเท่ากับ 1 และจะเพิ่มขึ้นทีละหนึ่งเพื่อรับข้อมูลชื่อสินค้าและราคาสินค้าชุดใหม่ โปรแกรมจะเชื่อมต่อกับไฟล์ datatest.txt ด้วยคำสั่ง open และสิ้นสุดการเชื่อมต่อด้วยคำสั่ง close ในการวนซ้ำเพื่อรับค่าการป้อนข้อมูลของสินค้าแต่ละรอบจะใช้คำสั่ง while True ซึ่งในแต่ละครั้งของการวนลูปจะเขียนข้อมูลลงในไฟล์ datatest.txt ด้วยคำสั่ง write

เขียนโปรแกรมรวมคำสั่งเขียนไฟล์ และอ่านค่าข้อมูลแบบ read, readline และ readlines

เมื่อรันโปรแกรม หากพิมพ์ 1 จะทำตามคำสั่งฟังก์ชัน writefile() จนกว่าจะป้อนคำว่า exit ก็จะออกจากฟังก์ชัน

เมื่อรันโปรแกรม หากพิมพ์ 2 จะทำตามคำสั่งฟังก์ชัน readallfile()

เมื่อรันโปรแกรม หากพิมพ์ 3 จะทำตามคำสั่งฟังก์ชัน readonelinefile()

เมื่อรันโปรแกรม หากพิมพ์ 4 จะทำตามคำสั่งฟังก์ชัน readlineloopfile ()

ภาษา Python มีโมดูลที่มีความสามารถในการจัดสร้างไฟล์ฐานข้อมูลแบบ RDBMS (Relational Database Management System) ที่มีขนาดของไฟล์เหมาะกับการจัดเก็บข้อมูลระดับเล็กถึงระดับกลาง สำหรับโมดูลของ Python ที่ใช้ดูแลไฟล์ฐานข้อมูลนี้ คือ SQLite3 ซึ่งถูกติดตั้งพร้อมกับโปรแกรม Python แล้ว โดยรองรับการใช้คำสั่ง select, insert, delete, update, create, drop, alter เป็นต้น
การใช้งาน SQLite3 แบ่งออกเป็นลำดับขั้นตอนดังนี้ คือ

2.1 การอ้างอิงโมดูลของ SQLite3

2.2 สร้างไฟล์ฐานข้อมูล มีรูปแบบการเขียน ดังนี้

โดย  cn เป็นตัวแปรของ Connect Object
sqlite3 เป็นประเภทของฐานข้อมูลที่ใช้งาน ในที่นี้คือโมดูล SQLite3
student เป็นที่อยู่ของไฟล์ฐานข้อมูล ซึ่งจะต้อง path ที่อยู่ของไฟล์ให้ถูกต้อง

2.3 การใช้ Cursor Object เมื่อเชื่อมต่อกับฐานข้อมูลได้แล้ว ต่อมาจะต้องใช้ Cursor Object เพื่อเข้าถึงตารางและข้อมูลในตาราง โดยต้องเขียนคำสั่ง cur = cn.cursor() เพื่อเชื่อม Cursor เข้ากับ Cursor Object

2.3.1 การใช้ Cursor Object กับการอ่านค่าข้อมูลด้วยคำสั่ง Select คำสั่งที่ใช้ในการอ่านค่าข้อมูลต่างๆ จากตาราง คือ คำสั่ง select โดยมีรูปแบบการเขียน ดังนี้ คือ
รูปแบบการใช้ select สำหรับอ่านเฉพาะ Field ที่ระบุ
รูปแบบ : select ชื่อฟิลด์ที่ 1, ชื่อฟิลด์ที่ 2 from ชื่อตาราง
ตัวอย่าง : select id, name, lastname from student
รูปแบบการใช้ select สำหรับอ่านทุกฟิลด์ในตาราง
รูปแบบ : select * from ชื่อตาราง
ตัวอย่าง : select * from student
รูปแบบการใช้ select พร้อมเงื่อนไขที่ต้องการอ่านเรคอร์ด
รูปแบบ : select * from ชื่อตาราง where เงื่อนไข
ตัวอย่าง : select * from student where age > 15
รูปแบบการใช้ select ร่วมกับการเรียงข้อมูล (Sort)
รูปแบบ : select * from ชื่อตาราง order by ชื่อฟิลด์
ตัวอย่าง (น้อยไปมาก) : select * from student order by age
ตัวอย่าง (มากไปน้อย) : select * from student order by age desc
รูปแบบการใช้ select พร้อมเงื่อนไขและการเรียงข้อมูล
รูปแบบ : select * from ชื่อตาราง where เงื่อนไข order by ชื่อฟิลด์
ตัวอย่าง : select * from student where age > 15 order by age
รูปแบบการใช้ select กับการเชื่อมระหว่างตาราง รูปแบบคำสั่ง จะเขียนได้ดังนี้
select ชื่อตารางที่ 1.ชื่อฟิลด์, ชื่อตารางที่ 2.ชื่อฟิลด์
from ชื่อตารางที่ 1, ชื่อตารางที่ 2
where ชื่อตารางที่ 1.ชื่อฟิลด์ (คีย์รองหรือ FK) = ชื่อตารางที่ 2.ชื่อฟิลด์ (คีย์หลัก หรือ PK)

ตัวอย่าง :   select ORDER.OrderNo, ORDER.OrderDate, CUSTOMER.CustFirst,
CUSTOMER.CustLast, CUSTOMER.CustPhone
from ORDER, CUSTOMER
where ORDER.CustID = CUSTOMER. CustID

2.3.2 การใช้ Cursor Object กับการเพิ่มข้อมูลใหม่ในตารางด้วยคำสั่ง Insert

รูปแบบการใช้คำสั่ง insert สำหรับเพิ่มข้อมูลลงทุกฟิลด์ของตาราง
รูปแบบ : insert into ชื่อตาราง values (ค่าข้อมูลที่ 1, ค่าข้อมูลที่ 2, ..., ค่าข้อมูลที่ n)
ตัวอย่าง : insert into student values (1,'Sawittree', 'Taweekarn', 13, 'M.2/5')
รูปแบบการใช้คำสั่ง insert สำหรับเพิ่มข้อมูลบางฟิลด์ของตาราง
รูปแบบ : insert into ชื่อตาราง(ชื่อฟิลด์ที่ 1, ชื่อฟิลด์ที่ 2)values(ค่าข้อมูลที่ 1, ค่าข้อมูลที่ 2)
ตัวอย่าง : insert into student (id, name, lastname) values (2,'Tawee', 'Meesuk')

2.3.3 การใช้ Cursor Object กับการแก้ไขข้อมูลในตารางด้วยคำสั่ง Update

รูปแบบการใช้คำสั่ง update สำหรับแก้ไขข้อมูลในฟิลด์ที่ระบุทุกเรคอร์ดในตาราง
รูปแบบ : update ชื่อตาราง set ชื่อฟิลด์ที่ 1 = ค่าข้อมูล, ชื่อฟิลด์ที่ 2 = ค่าข้อมูล
ตัวอย่าง : update student set age = age + 1
จากตัวอย่างจะเป็นการเพิ่มอายุนักเรียนทุกคนในตาราง โดยเพิ่มขึ้นคนละ 1 ปี
รูปแบบการใช้คำสั่ง update โดยใช้ร่วมกับคำสั่ง where เพื่อแก้ไขข้อมูลบางเรคอร์ด
รูปแบบ : update ชื่อตาราง set ชื่อฟิลด์ที่ 1 = ค่าข้อมูล, ชื่อฟิลด์ที่ 2 = ค่าข้อมูล Where ชื่อฟิลด์ 1 = ค่าข้อมูล
ตัวอย่าง : update student set classroom = 'M.3/2' , age = 14 where id = 1

2.3.4 การใช้ Cursor Object กับการลบเรคอร์ดข้อมูลจากตารางด้วยคำสั่ง Delete

รูปแบบการใช้คำสั่ง delete สำหรับลบเรคอร์ดทั้งหมดในตาราง
รูปแบบ : delete from ชื่อตาราง
ตัวอย่าง : delete from student
รูปแบบการใช้คำสั่ง delete ร่วมกับคำสั่ง where สำหรับลบบางเรคอร์ดในตาราง
รูปแบบ : delete from ชื่อตาราง where ชื่อฟิลด์ = ค่าข้อมูล
ตัวอย่าง : delete from student where id = 1

2.4 การสร้างตารางและความสัมพันธ์ของตาราง (Relationship)
การสร้างตารางในไฟล์ฐานข้อมูล มี 2 วิธี คือ การเขียนโค้ดคำสั่งสร้างตาราง และการใช้โปรแกรมสำเร็จรูปสร้างตาราง โดยให้ทำการดาวน์โหลดโปรแกรม DB Browser for SQLite จากเว็บไซต์ https://sqlitebrowser.org/ และทำการติดตั้งโปรแกรมเพื่อใช้จัดการฐานข้อมูล ดังนี้


จะได้หน้าตาโปรแกรม DB Browser for SQLite ดังนี้

รูปแบบการเขียนคำสั่ง create เพื่อสร้างตาราง :
create table ชื่อตาราง ( ชื่อฟิลด์ที่ 1 ชนิดข้อมูล, ชื่อฟิลด์ที่ 2 ชนิดข้อมูล, ชื่อฟิลด์สุดท้าย ชนิดข้อมูล)
ตัวอย่าง :

เปิดโปรแกรม DB Browser for SQLite ขึ้นมา แล้วคลิกที่ปุ่ม open Database เปิดไฟล์ฐานข้อมูล product.db ที่สร้างไว้ขึ้นมา เพื่อดูตารางที่สร้างขึ้นจากการเขียนโค้ดคำสั่ง

รูปแบบการเขียนคำสั่ง create เพื่อสร้างตาราง โดยระบุ Primary Key:
create table ชื่อตาราง (
ชื่อฟิลด์ที่ 1 ชนิดข้อมูล,
ชื่อฟิลด์ที่ 2 ชนิดข้อมูล,
ชื่อฟิลด์สุดท้าย ชนิดข้อมูล,
constraint[]
primary key (ชื่อฟิลด์ที่เป็นคีย์หลัก PK))
ตัวอย่าง :

เปิดโปรแกรม DB Browser for SQLite ขึ้นมา แล้วคลิกที่ปุ่ม open Database เปิดไฟล์ฐานข้อมูล student.db ที่สร้างไว้ขึ้นมา เพื่อดูตารางที่สร้างขึ้นจากการเขียนโค้ดคำสั่ง

รูปแบบการเขียนคำสั่ง create เพื่อสร้างตารางที่มีความสัมพันธ์ (Relationship) กับตารางอื่น :
create table ชื่อตาราง (
ชื่อฟิลด์ที่ 1 ชนิดข้อมูล,
ชื่อฟิลด์ที่ 2 ชนิดข้อมูล,
ชื่อฟิลด์ที่ 3 ชนิดข้อมูล, constraint [ชื่อฟิลด์ที่เป็น Foreign Key] references
ชื่อตารางที่อ้างอิง Primary Key(ฟิลด์ที่เป็น Primary Key)
on update cascade
on delete cascade )
ตัวอย่าง :

เมื่อรันโปรแกรม จะได้ตาราง 2 ตาราง คือ product และ productgroup ดังรูป

2.5 เพิ่มเรคอร์ดข้อมูลลงในตาราง ด้วยคำสั่ง insert ของ SQL Statement
รูปแบบการใช้คำสั่ง insert เพิ่มเรคอร์ดในตาราง
insert into ชื่อตาราง values (ค่าข้อมูล, ค่าข้อมูล, ค่าข้อมูล)
ตัวอย่าง :


จากตัวอย่าง มีการสร้างฟังก์ชัน productinput() ขึ้นมาเพื่อรับค่าข้อมูลใส่ในตาราง product (สร้างเอาไว้ก่อนแล้วในขั้นตอนการสร้างตาราง) โดยรับค่าข้อมูลทางคีย์บอร์ดด้วยคำสั่ง input() แล้วบันทึกไว้ในตัวแปร a, b, c, d, e ตามลำดับ (ตามจำนวนฟิลด์ในตาราง) หลังจากนั้นใช้คำสั่ง cur.execute("insert into product values(?,?,?,?,?)", (a,b,c,d,e)) โดยใช้เครื่องหมาย ? อ้างอิงค่าข้อมูลของตัวแปรที่จะนำไปใส่ในแต่ละฟิลด์ของตาราง product
เมื่อรันโปรแกรม จะเข้าสู่หน้าจอ Python Shell ให้เราทำการกรอกข้อมูล ดังรูป

เมื่อเปิดโปรแกรม DB Browser for SQLite ก็จะได้เรคอร์ดข้อมูลในตาราง product และ productgroup ดังรูป

2.6 อ่านค่าข้อมูลจากตารางด้วยคำสั่ง select มีหลายรูปแบบดังนี้
รูปแบบที่ 1 การอ่านเรคอร์ดระหว่างคำสั่ง cursor กับตัวแปร Python แบบส่งผ่านค่าข้อมูลไปยังตัวแปรโดยตรง
รูปแบบ : cur.execute("select * from ชื่อตาราง") ชื่อตัวแปร = cur.fetchall() print(ชื่อตัวแปร)
ตัวอย่าง :


ผลลัพธ์ :

เมื่อใช้คำสั่ง fetchall ข้อมูลจะออกมาเป็นชนิด List โดยสามารถอ่านค่าข้อมูลบางฟิลด์ของบางเรคอร์ดได้ โดยการอ้างหมายเลขลำดับของตัวแปร List เช่น
เมื่อใช้คำสั่ง showgroup = cur.fetchall() ผลลัพธ์ที่ได้คือ [('01', 'computer'), ('02', 'stationery'), ('03', 'clothes')] โดยสามารถระบุข้อมูลบางส่วนของเรคอร์ดได้ ดังนี้คือ
- showgroup[0] คือ เรคอร์ดที่ 1 ในที่นี้คือ ('01', 'computer') ถ้าระบุตำแหน่ง showgroup[0][0] คือ ฟิลด์แรกของเรคอร์ดแรก คือ '01' ส่วน showgroup[0][1] คือ ฟิลด์ที่ 2 ของเรคอร์ดที่ 1 คือ 'computer'
- showgroup[1] คือ เรคอร์ดที่ 2 ในที่นี้คือ ('02', 'stationery') ถ้าระบุตำแหน่ง showgroup[1][0] คือ ฟิลด์แรกของเรคอร์ดที่ 2 คือ '02' ส่วน showgroup[1][1] คือ ฟิลด์ที่ 2 ของเรคอร์ดที่ 2 คือ 'stationery'
- showgroup[2] คือ เรคอร์ดที่ 3 ในที่นี้คือ ('03', 'clothes') ถ้าระบุตำแหน่ง showgroup[2][0] คือ ฟิลด์แรกของเรคอร์ดที่ 3 คือ '03' ส่วน showgroup[2][1] คือ ฟิลด์ที่ 2 ของเรคอร์ดที่ 3 คือ 'clothes'
ดังนั้นถ้าเราต้องการเรียกดูข้อมูลบางส่วนของเรคอร์ด ก็ให้ระบุตำแหน่งไปเลย เช่น


ผลลัพธ์ที่ได้คือ

รูปแบบที่ 2 การใช้คำสั่ง for ร่วมกับคำสั่ง Cursor Object สำหรับอ่านค่าข้อมูลในตาราง
รูปแบบ : cur.execute("select * from ชื่อตาราง") for ชื่อตัวแปร in cur.fetchall() print(ชื่อตัวแปร)
ตัวอย่าง :

ผลลัพธ์ :

ถ้าต้องการอ่านค่าข้อมูลบางฟิลด์ของเรคอร์ด ให้ระบุคำสั่งเป็น print(a[0]) แสดงค่าข้อมูลในฟิลด์แรก print(a[1]) แสดงค่าข้อมูลในฟิลด์ที่ 2 ไปเรื่อยๆ ตามลำดับ ตัวอย่างเช่น

รูปแบบที่ 3 การใช้คำสั่ง select อ่านค่าข้อมูลตารางมากกว่า 1 ตารางที่มีความสัมพันธ์กัน
ตัวอย่างเช่น :

ผลลัพธ์ที่ได้ คือ จะแสดงข้อมูลในฟิลด์ pid, title, price ของตาราง product และฟิลด์ title ของตาราง productgroup โดยเรียงลำดับข้อมูลตามที่เรากำหนด ซึ่งสามารถแสดงข้อมูลจาก 2 ตารางได้ เพราะมีฟิลด์ที่สัมพันธ์กันคือ ฟิลด์ groupid นั่นเอง

2.7 แก้ไขค่าข้อมูลเดิมในตารางด้วยคำสั่ง update
รูปแบบ : update ชื่อตาราง set ชื่อฟิลด์ = ค่าข้อมูลใหม่ where ชื่อฟิลด์ = ค่าข้อมูล
เช่น : update product set title = 'computer' where pid = '01'
ตัวอย่าง :

        

ผลลัพธ์ที่ได้ คือ

2.8 ลบค่าข้อมูลในตารางด้วยคำสั่ง delete
รูปแบบ : delete from ชื่อตาราง where ชื่อฟิลด์ = ค่าข้อมูล เช่น : delete from product where pid = '01'
ตัวอย่าง :

ผลลัพธ์ที่ได้

2.9 ปิดการเชื่อมต่อฐานข้อมูล
การปิดการเชื่อมต่อไฟล์ฐานข้อมูล มีรูปแบบการเขียนคำสั่ง ดังนี้คือ cn.close() มักใช้คำสั่งนี้ก่อนสิ้นสุดการใช้งานของโปรแกรม เพื่อไม่ให้กระบวนการทำงาน Engine ด้านฐานข้อมูลตกค้างในระบบปฏิบัติการ เมื่อยุติการใช้โปรแกรมไปแล้ว

3.1 ดาวน์โหลดและติดตั้ง Appserv เพื่อใช้งาน localhost โดยมีขั้นตอนดังนี้
3.1.1 ดาวน์โหลด appserv จากเว็บไซต์ https://www.appserv.org/th/ ดังรูป

จะได้ไฟล์ติดตั้ง Appserv ชื่อว่า appserv-win32-8.6.0.exe ให้ดับเบิ้ลคลิกที่ไฟล์เพื่อทำการติดตั้งโปรแกรม
3.1.2 ติดตั้งโปรแกรม appserv โดยทำตามขั้นตอนต่อไปนี้

3.1.3 เปิดบราวเซอร์ Internet Explorer หรือ Google Chrome ขึ้นมา แล้วเข้าสู่หน้าแรกของ Appserv โดยพิมพ์คำว่า http://127.0.0.1:81 แล้วคลิกที่ phpMyAdmin Database Manager Version 4.6.6 ดังรูป

3.1.4 กรอก Username และ Password ที่ได้กำหนดไว้ในขั้นตอนการติดตั้ง แล้วคลิกปุ่ม Go

3.1.5 สร้างฐานข้อมูล หรือ Database โดยคลิกที่ New

ใส่ชื่อ database และภาษา ซึ่งที่นี้จะเลือกเป็น utf8_unicode_ci แล้วกดปุ่ม Create

3.2 ดาวน์โหลดโมดูลพิเศษ MySQLdb
3.2.1 ทำการติดตั้งโมดูลพิเศษที่ชื่อว่า MySQLdb เพื่อเชื่อมต่อฐานข้อมูล MySQL กับภาษา Python จากเว็บไซต์ https://pypi.org/project/mysqlclient/#files โดยเลือกไฟล์ที่ชื่อว่า “mysqlclient-1.3.12-cp36-cp36m-win32.whl” ดังรูป

3.2.2 เมื่อทำการดาวน์โหลดไฟล์เรียบร้อยแล้ว ไฟล์ติดตั้งจะอยู่ในโฟลเดอร์ Downloads ของเครื่องคอมพิวเตอร์ ให้ทำตามขั้นตอนดังต่อไปนี้
1) คัดลอกตำแหน่งที่อยู่ของไฟล์ที่เพิ่งดาวน์โหลดมา

2) เปิดโปรแกรม Command Prompt ขึ้นมา แล้วพิมพ์ว่า cd ตามด้วยตำแหน่งไฟล์ที่เราคัดลอกมา ในที่นี้จะเป็น cd C:\Users\OFFBKK\Downloads ดังรูป

แล้วกดปุ่ม Enter จะได้ผลลัพธ์ดังรูป

3) หลังจากนั้นให้พิมพ์คำสั่ง pip install ตามด้วยชื่อไฟล์ (โดยคัดลอกชื่อไฟล์ ดังรูป) ในที่นี้ไฟล์ที่ดาวน์โหลดมาชื่อว่า mysqlclient-1.3.12-cp36-cp36m-win32.whl

จึงต้องพิมพ์ว่า pip install mysqlclient-1.3.12-cp36-cp36m-win32.whl แล้วกด Enter เพื่อทำการติดตั้ง เมื่อติดตั้งเรียบร้อยแล้ว จะมีข้อความว่า Successfully

3.2.3 เปิดโปรแกรม Python ขึ้นมา หลังจากนั้นให้ลองพิมพ์คำสั่ง import MySQLdb ถ้าไม่มี Error แสดงว่าได้ทำการติดตั้งโมดูล MySQLdb เรียบร้อยแล้ว

3.3 การเขียนโปรแกรมสำหรับเชื่อมต่อฐานข้อมูล MySQL ด้วยโมดูล MySQLdb
3.3.1 เรียกใช้โมดูล MySQLdb โดยใช้คำสั่ง import MySQLdb
3.3.2 ใช้ Connect Object เชื่อมต่อกับฐานข้อมูล MySQL โดยจะต้องระบุชื่อผู้ใช้และรหัสผ่าน โดยมีรูปแบบการเขียนดังนี้ คือ
cn = MySQLdb.connect(host = "ชื่อ host", user = "ชื่อผู้ใช้", passwd = "รหัสผ่าน", db = "ชื่อฐานข้อมูล")
cur = cn.cursor()

ตัวอย่างเช่น

3.3.3 เขียนโปรแกรมสำหรับเชื่อมต่อฐานข้อมูล MySQL
การเขียนโปรแกรมสำหรับเชื่อมต่อฐานข้อมูล MySQL ด้วยโมดูล MySQLdb จะมีลักษณะเหมือนกับการใช้โมดูล SQLite ในหัวข้อที่ผ่านมา โดยมีคำสั่งในการจัดการฐานข้อมูล เช่น การสร้างตารางด้วยคำสั่ง create, การเพิ่มเรคอร์ดข้อมูลใหม่ด้วยคำสั่ง insert, การเรียกดูข้อมูลด้วยคำสั่ง select, การแก้ไขเรคอร์ดข้อมูลด้วยคำสั่ง update, การลบเรคอร์ดข้อมูลด้วยคำสั่ง delete เป็นต้น
1) การสร้างตารางด้วยคำสั่ง create

2) การเพิ่มเรคอร์ดข้อมูลใหม่ด้วยคำสั่ง insert

ผลลัพธ์ที่ได้

หมายเหตุ : %s ใช้สำหรับตัวแปรชนิด integer ส่วน '%s' ใช้สำหรับตัวแปรชนิด string

3) การเรียกดูข้อมูลด้วยคำสั่ง select

ผลลัพธ์ที่ได้

4) การแก้ไขเรคอร์ดข้อมูลด้วยคำสั่ง update

ผลลัพธ์ที่ได้

ลักษณะการทำงานของโปรแกรม รับค่ารหัสนักเรียนทางคีย์บอร์ดด้วยคำสั่ง input() และแปลงค่าเป็น integer เพราะจะต้องนำค่าตัวแปร student_id ไปเปรียบเทียบกับฟิลด์ id (row[0]) ของตาราง ซึ่งเป็นชนิด integer หลังจากนั้นใช้คำสั่ง cur.execute("select * from student") เพื่อเรียกดูข้อมูลทั้งหมดในตาราง วนลูปคำสั่ง for row in cur.fetchall() เพื่อดูข้อมูลทีละเรคอร์ด ในระหว่างการวนลูปให้ทำการตรวจสอบเงื่อนไขว่า รหัสนักเรียนที่กรอกเข้ามาตรงกับฟิลด์ id ในตารางหรือไม่ (student_id == row[0]) ถ้าตรงกันให้แสดงเรคอร์ดนั้นมาทางหน้าจอด้วยคำสั่ง print(row) จากนั้นให้กรอกค่าเดิมที่ต้องการแก้ไข แล้วนำค่ามาเปรียบเทียบว่าตรงกับฟิลด์ใด เช่น ถ้าตรงกับฟิลด์ id ก็ให้ทำการแทนที่ข้อมูลของฟิลด์ id ด้วยคำสั่ง cur.execute("update student set id = %s where id = %s",(newdata, row[0])) โดย %s ตัวแรกคือตัวแปร newdata ก็คือข้อมูลใหม่ที่ต้องใส่เข้าไป ส่วน %s ตัวที่สองคือ row[0] เป็นการระบุตำแหน่งของเรคอร์ดที่ต้องการแก้ไข

5) การลบเรคอร์ดข้อมูลด้วยคำสั่ง delete

ผลลัพธ์ที่ได้

ลักษณะการทำงานของโปรแกรม รับค่ารหัสนักเรียนทางคีย์บอร์ดด้วยคำสั่ง input() และแปลงค่าเป็น integer เพราะจะต้องนำค่าตัวแปร student_id ไปเปรียบเทียบกับฟิลด์ id (row[0]) ของตาราง ซึ่งเป็นชนิด integer หลังจากนั้นใช้คำสั่ง cur.execute("select * from student") เพื่อเรียกดูข้อมูลทั้งหมดในตาราง วนลูปคำสั่ง for row in cur.fetchall() เพื่อดูข้อมูลทีละเรคอร์ด ในระหว่างการวนลูปให้ทำการตรวจสอบเงื่อนไขว่า รหัสนักเรียนที่กรอกเข้ามาตรงกับฟิลด์ id ในตารางหรือไม่ (student_id == row[0]) ถ้าตรงกันให้แสดงเรคอร์ดนั้นมาทางหน้าจอด้วยคำสั่ง print(row) จากนั้นให้ทำการยืนยันการลบ ถ้ามีการพิมพ์ y หรือ Y ทางคีย์บอร์ดให้ทำการลบเรคอร์ดนั้นด้วยคำสั่ง cur.execute("delete from student where id = %s", (row[0],))

<< Go Back