|
Python อ่านโครงสร้างของ Table ของ MS Access

วันนี้เรามาดูวิธ๊หาชื่อตาราง และชื่อField ของฐานข้อมูล MS Access กันดีกว่า (ใครเดาได้หรือไม่ ว่าจะเอาไปทำอะไรต่อ?) วิธ๊การก็ง่ายๆ โดยเรียกข้อมูล ผ่าน object "cursor"
1) strConn = 'DRIVER={Microsoft Access Driver (*.mdb)};DBQ=' + E1.get()+'.mdb' 2) db = pyodbc.connect(strConn,autocommit=True) 3) cursor = db.cursor()
ต่อไปก็วนลูป ดึงชื่อตารางจากฐานข้อมูลที่เลือก แล้วเอาไป เก็บในตัวแปรแบบ List ที่ชื่อว่า ListTable for row in cursor.tables(tableType='TABLE'): ListTable.append(row.table_name)
ต่อไปก็เลือกที่ละ Table มาหาชื่อ Field แล้วเก็บในตัวแปรแบบString ชื่อ L for x in ListTable: L = L + x + "n" L = L + "Fields Detail" + "n" for row in cursor.columns(table=x): L = L + "t" +row.column_name + "n"
สุดท้ายก็จะได้ข้อมูลชื่อตาราง และชื่อField ในตัวแปร L
แล้วนำมาแสดง ใน Text widgets โดยนำ scrollbar widgets มาติดไว้ลองดูใน sourcecode ล่ะกัน ที่นี้เลย
Create Date : 01 มิถุนายน 2554 | | |
Last Update : 1 มิถุนายน 2554 20:06:06 น. |
Counter : 1613 Pageviews. |
| |
|
|
|
|
Python การจัดการ widgets ด้วย grid method
จากที่ผ่านมา การจัดการวาง widgets บน form เราใช้ pack method ซึ่งค่อนข้างยุ่งยาก แต่มีอีกวิธีคือใช้ grid method จากคำแนะนำที่ //effbot.org/tkinterbook/grid.htm ทำให้จัดการได้ง่ายขึ้น หลักการของ grid คือ การวาง widgets ที่ต้องการบนตาราง โดยการระบุ row และ column (น่าแปลกที่ column ต้องเขียนเต็มๆ ไม่ได้ย่อว่า col) และถ้าต้องการขยาย column หรือ row ก็กำหนดค่า columnspan หรือ rowspan เข้าไป สุดท้ายถ้าต้องการให้ชิดซ้าย ขวา บน ล่าง ก็ใช้ sticky กับค่าทิศทางแทน W E N S
เช่น L1 = Label(root, text="กรอกชื่อฐานข้อมูล" ) L1.grid(row=0, column=0, sticky = W) หมายถึง วาง Label ไว้ที่ แถวที่0 สดมภ์ที่ 0 และชิดทางซ้ายมือ
วาง Widgets ตามตำแหน่งที่ต้องการ ด้วยการระบุ row และ column

เพิ่ม sticky

เพิ่มการ columnspan

ตัวอย่าง source code งับ
Create Date : 02 พฤษภาคม 2554 | | |
Last Update : 2 พฤษภาคม 2554 17:31:21 น. |
Counter : 2486 Pageviews. |
| |
|
|
|
|
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 น. |
Counter : 4205 Pageviews. |
| |
|
|
|
|
Python ทดลองเขียนโปรแกรมเครื่องคิดเลข บวก ลบ ตอนที่2
ครั้งที่แล้วเป็นการเขียนโปรแกรมให้แสดงตัวเลขที่กด ต่อไปเรามาเขียนโปรแกรมในส่วน การกดเครื่องหมาย บวก ลบ และ เท่ากับ เพื่อง่ายต่อการเขียนโปรแกรม เราจะบวก ลบเลข เพียง สองจำนวนเท่านั้นนะครับ ดังนั้นจะม่ีข้อมูลตัวเลข ชุดที่1 แล้ว เครื่องหมายบวก หรือลบ และตามด้วยตัวเลขชุดที่2 เช่น 50+60 ข้อมูลจะถูกเก็บใน list1 = ['50', '+', '60']
การอ้างข้อมูลใน list ก็ใส่ index ให้มัน เช่น list1[0] = '50' list1[1] = '+' list1[2] = '60'
การเพิ่มข้อมูลเข้าไปใน list จะใช้ method append เช่น list1.append('7') จะใส่ข้อมูล '7' เข้าไปต่อท้าย list1 ผลลัพธ์ ก็จะเป็น ['50', '+', '60', '7']
การกำหนดการเริ่มต้นของ list ก็ใช้ list1 = []
อีกสิ่งที่ต้องควรรู้คือ ตัวแปรแบบ global เพราะมีการใช้ตัวแปร tmpStr และ list1 ภายใน function (def) จึงต้องประกาศตัวแปรแบบ global ดังนี้ global list1 global tmpStr
ต่อไปเรามาดูรายละเอียดของ ฟังก์ชั่นกัน def callbackPM(str): เมื่อกดเครื่องหมาย บวก หรือลบ จะเรียกฟังก์ชั่นนี้ global list1 ประกาศตัวแปรแบบ global global tmpStr disp['text'] = disp['text']+str print tmpStr print str list1.append(tmpStr) เก็บตัวเลขชุดที่ 1ใส่ใน list1 list1.append(str) เก็บเครื่องหมาย บวก หรือ ลบ ในlist1 print list1 tmpStr ="" clear tmpStr เพื่อเก็บค่าตัวเลข ชุดใหม่
def cal(): เมื่อกดเครื่องหมายเท่ากับ จะเรียกฟังก์ชั่นนี้ global list1 ประกาศตัวแปรแบบ global global tmpStr list1.append(tmpStr) เก็บตัวเลขชุดที่ 2ใส่ใน list1 result = 0 if list1[1] == '+': ตรวจสอบถ้าเป็นเครื่องหมายบวก ก็บวกกัน result = int(list1[0])+int(list1[2]) elif list1[1] == '-': ตรวจสอบถ้าเป็นเครื่องหมายลบ ก็ลบกัน result = int(list1[0])-int(list1[2]) disp['text'] = str(result) แสดงผลลัพธ์ list1 = [] tmpStr = str(result) print list1 print tmpStr
code เต็มๆ download ตรงนี้ครับ
Create Date : 15 เมษายน 2554 | | |
Last Update : 15 เมษายน 2554 22:03:36 น. |
Counter : 3682 Pageviews. |
| |
|
|
|
|
| |
|
|