debian: เกร็ด Adodb for Python
Submitted by wd on Mon, 2007-01-22 15:37
Adodb for Python เป็น API สำหรับให้ไพธอนติดต่อกับฐานข้อมูลใด ๆ
ข้อดีคือสามารถเปลี่ยนฐานข้อมูลโดยไม่ต้องเปลี่ยนคำสั่งการติดต่อ
ข้อเสียคือมีชั้นการรันเพิ่ม ทำให้เข้าถึงข้อมูลช้าลง
มีเอกสารภาษาไทยอยู่ที่ Exzilla.net - ADOdb MySQL Tutorial (Thai Translation)
การติดตั้ง
ในที่นี้จะเขียนแค่ postgresql
# aptitude install python python-adodb postgresql-8.1 psycopg
ตัวอย่างการใช้งาน
import adodb; conn = adodb.NewADOConnection('postgres') conn.Connect('server','user','pwd','db') cursor = conn.Execute('select * from table') while not cursor.EOF: print cursor.fields cursor.MoveNext() # cursor.Close() conn.Close()
ตัวอย่างต่อไปแปลงมาจาก ADOdb Library for PHP ผิด ตก ยก เว้น
- ตัวอย่าง select
import adodb conn = adodb.ADONewConnection('access') cursor = conn.Connect('northwind') rs = conn.Execute('SELECT * FROM products') if not rs: print conn.ErrorMsg() else: while not rs.EOF: print "%s %s <br />" % (rs.fields[0], rs.fields[1]) rs.MoveNext() # # rs.Close() # optional conn.Close() # optional
- ตัวอย่าง select แบบมีฟิลด์ออปเจกต์
import adodb conn = adodb.ADONewConnection('access') cur = conn.Connect('northwind') rs = conn.Execute('SELECT CustomerID, OrderDate FROM Orders') if not rs: print conn.ErrorMsg else: while not rs.EOF: field = rs.FetchField(1) metatype = rs.MetaType(field.type) if metatype=='D' or metatype=='T': print "%s %s <br />" % (rs.fields[0], rs.fields[1]) else: print "%s <br />" % (rs.fields[0]) # rs.MoveNext() # # rs.Close() # optional conn.Close() # optional
- การ Insert
import adodb import datetime conn = adodb.ADONewConnection('access') cur = conn.Connect('northwind') shipto = conn.qstr("John's Old Shoppe") sql = "INSERT INTO orders (CustomerID,EmployeeID,OrderDate,ShipName)" \ + " VALUES ('ANNATR', 2, %s, %s" \ % (conn.DBDate(datetime.datetime.now()), shipto) if not conn.Execute(sql): print "Error insertion: %s <br />" % (conn.ErrorMsg()) #
- การ Debug
import adodb import datetime conn = adodb.ADONewConnection('access') cur = conn.Connect('northwind') shipto = conn.qstr("John's Old Shoppe") sql = "INSERT INTO orders (CustomerID, EmployeeID, OrderDate, ShipName)"\ + " VALUES ('ANATR', 2, %s, %s)" \ % (conn.FormatDate(datetime.datetime.now()), shipto) conn.debug = True if not conn.Execute(sql): print "Error inserting" #
import sys try: curs = conn.Execute('select * from badtable') # table does not exist except: print sys.exc_info()[1] # retrieve the error message returned by database
วิธียืมจาก php - ต้องปิด useExceptions ก่อน
conn.useExceptions = False curs = conn.Execute('select * from badtable') # table does not exist if curs == None: print conn.ErrorMsg()
- Printer-friendly version
- Log in or register to post comments
- 7150 reads
Recent comments