Sufficiency Economy
Group Blog
 
All blogs
 
Python ติดต่อฐานข้อมูล Access

ตอนนี้มาเรื่องฐานข้อมูลกันบ้าง ฐานข้อมูลที่ชอบใช่กันก็พวก ms access
mysql sqlite แต่วันนี้เอา ms access ก่อนดีกว่า
source code คลิ๊กเลย



มาเริ่มกันเลย อย่างแรกต้อง download module "pyodbc" มาติดตั้งก่อน
จากที่นี้เลย ไซด์นี้เลย //code.google.com/p/pyodbc/ หรือ d/l ตรงก็ที่นี้pyodbc

เมื่อติดตั้งเสร็จ ทดสอบ ลองพิมพ์คำสั่ง import pyodbc ถ้าไม่ error ก็แปลว่าติดตั้งใช้งานได้แล้ววว

ผมได้สร้างฐานข้อมูล MS Access ชื่อ school และมี table ชื่อ student
มีสาม Fields คือ ID FName LName : เลขประจำตัว ชื่อ นามสกุล ตามลำดับ

ต่อไปมาสู่การเขียน code
import pyodbc
เรียกใช้ module pyodbc

db = pyodbc.connect('DRIVER={Microsoft Access Driver (*.mdb)};DBQ=school.mdb')
ทำการเชื่อมต่อฐานข้อมูลโดยระบุ driver
DRIVER={Microsoft Access Driver (*.mdb)};

และบอกที่อยู่ของฐานข้อมูล access เช่น ฐานข้อมูลอยู่ที่
d:homepythondbschool.mdb ก็เขียนแบบนี้
DBQ=d:homepythondbschool.mdb
แต่ในที่นี้เพื่อง่ายเลยให้โปรแกรมกับฐานข้อมูลอยู่ที่เดียวกันเลยกำหนดเป็น
DBQ=school.mdb

ถ้าฐานข้อมูลมี password ก็กำหนด
UID=admin;PWD=xxx
เราจะคั่นข้อมูลด้วยเครื่องหมาย ; นะครับ
แต่ในที่นี้ไม่มีpass เลยไม่ใส่

เมื่อติดต่อได้แล้ว ก็เรียก method cursor เพื่อสร้าง object cursor ทำให้เราสามารถใช้คำสั่ง sql ได้ ผ่าน method execute และอ่านข้อมูลที่ query ผ่าน method fetchall อีกทั้งอ่านข้อมูล schema ของ table ได้ด้วย เป็นต้น

cursor = db.cursor()
cursor.execute("select * from student")
rs = cursor.fetchall()

มาถึงคำสั่งนี้ เราก็ได้ข้อมูล student มาเก็บที่ตัวแปร rs แล้ว (ตั้งชื่ออื่นก็ได้น่า แต่ติดมาจาก vb ที่ย่อมาจาก recordset)
การเรียกข้อมูล ก็ทำตามนี้
for row in rs:
disp.insert(INSERT,row[0]+ "t" + row[1] + "t" +row.LName+"n")

โดยเรียกข้อมูลที่ละ แถว(row) มาแสดง โดยระบุ index เช่น
row[0] หมายถึง ID
แต่ถ้าเราจำ index ไม่ได้ ก็ให้ระบุเป็นชื่อ Field ได้เหมือนกัน เช่น
row.LName

เมื่อแสดงเสร็จ ก็ปิด ฐานข้อมูลด้วยคำสั่ง
db.close

ในตัวอย่างนี้เราใช้ GUI Text เพื่อแสดงข้อมูล
root = Tk()
disp = Text(root)
disp.pack()

และแสดงข้อมูลด้วยคำสั่ง
disp.insert(INSERT,row[0]+ "t" + row[1] + "t" +row.LName+"n")
จากที่อธิบายข้างต้น ตรง row.LName จะเปลี่ยนเป็น row[2] ก็ได้นะครับ

สุดท้าย web python ดีๆ ที่ใช้ศึกษา ก็ที่นี้เลย //www.tutorialspoint.com/python/




Create Date : 16 เมษายน 2554
Last Update : 16 เมษายน 2554 20:46:56 น. 0 comments
Counter : 3794 Pageviews.

ชื่อ :
Comment :
  *ใช้ code html ตกแต่งข้อความได้เฉพาะสมาชิก
 

wink99_th
Location :
พิษณุโลก Thailand

[Profile ทั้งหมด]

ฝากข้อความหลังไมค์
Rss Feed
Smember
ผู้ติดตามบล็อก : 8 คน [?]




New Comments
Friends' blogs
[Add wink99_th's blog to your web]
Links
 

 Pantip.com | PantipMarket.com | Pantown.com | © 2004 BlogGang.com allrights reserved.