#!/usr/bin/python # TITLE: dbtrainer4 # WRITTEN BY: Bradley Stec, July 1999 # RuleSpace, Inc. # SUPPORTS: WebOps Database Interface Trainer Script # PURPOSE: This script is a code and output example of how to use the # MySQLdb API to communicate to a database and perform basic # SQL command language requests. # FUNCTION: Both by executing the script and by reading the source code, # a programmer should be able to get a grasp on how the interface # works and may borrow code for their own script projects. # REQUIREMENTS: This script requires the access to the webops module, and that a # database named "test" be installed in the webops specified # database server. # # CHANGES: 7/99 Initial Version import sys import webops import traceback sys.stderr = sys.stdout # Set Up Page Layout print "content-type: text/html" print print "\n" print "
\n" print "RuleSpace, Inc. WebOps Database Interface Trainer -- Part 4" print "By viewing the CGI script which presents the information below you'll be able to see how the database interface and API works within the WebOps scripting environment.
" print "
" traceback.print_exc() sys.exit() # A LITTLE BONUS INFORMATION FROM THE API # The API can provide some information about the connection and server. Note that these functions are # making use of the "db" object which is a sub-class of the WebOpsDB object. The "db" object bypasses the "wrapper" # level of the MySQLdb interface and speaks directly to the C coded _mysqlmodule.so, therefore it is not recommended # that you use this method frequently in timing-sensitive script applications. print "CONNECTED TO\n" print "\n"
" print " server ", WebOpsDB.db.get_host_info(), "
" print " running mySQL server v", WebOpsDB.db.get_server_info(), "
" print " current status: ",WebOpsDB.db.stat(), "" print "
" # CREATE YOUR PERSONAL CONNECTION TO THE "RESULTS" WITHIN THE CONNECTION OBJECT # We haven't actually queried anything yet, so don't get confused, we're just preparing for it. try: cursor = WebOpsDB.cursor() except: print "\n\n" traceback.print_exc() sys.exit() # REQUERY TO SEE RESULTS try: cursor.execute("SELECT * FROM TEAM") resultSet = cursor.fetchall() except: print "\n\n" traceback.print_exc() sys.exit() # CONVERT THE LIST OF LISTS INTO A DICTIONARY resultDict = {} numColumns = len(cursor.description)-1 numRows = len(resultSet)-1 cursorColumn = 0 cursorRow = 0 # Put Field Names In As Keys for cursorFieldname in cursor.description: tempValues = [] tempDict = {} tempKey = cursorFieldname[0] while cursorRow <= numRows: # print resultSet[cursorRow][cursorColumn] tempValues.append(str(resultSet[cursorRow][cursorColumn])) cursorRow = cursorRow + 1 tempDict = {tempKey:tempValues} cursorRow = 0 cursorColumn = cursorColumn + 1 resultDict.update(tempDict) print "" print "EXAMPLE OF CONVERTING THE CURSOR DATA INTO A PYTHON DICTIONARY.
" # NOTE- This column set is different, we're producing the rows by dictionary keys and placing values in the cells. print "A different way to slice the data" print "" print "
" for cursorFieldname in cursor.description: print "
" print "" print "" print " " +cursorFieldname[0]+ " " print "" for x in resultDict[cursorFieldname[0]]: print x print "," print " " # CLOSING THE DATABASE OBJECT try: WebOpsDB.close() except: print "\n\n
" traceback.print_exc() sys.exit() # CONTINUED IN DBTRAINER4 # To learn more about converting result sets into Python dictionary data types, see dbtrainer4. print "