Code review request
Steven Howe
howe.steven at gmail.com
Wed Dec 22 17:51:53 EST 2010
On 12/22/2010 10:34 AM, Jason Staudenmayer wrote:
> Hi All,
> I'm a python newbie so please be kind. I've been reading book after book and have written a script or two but this is my first real "program". Just looking for any suggestions and pointers. I've done some work with bash scripts and php (not OOP) a while a go. I'm not a programmer but would like to possibly expand in to it (right now an IT guy). Am I on the right track so far?
>
> The program should be documented enough to explain.
>
> """
> Created on Tue Dec 21 13:39:41 2010
> @author: jason
>
> Usage: cmd_drug_testing.py [options]...
> Will select a random employee from the local database (located in the current directory)
> and display the name by default.
>
> This program (Drug Testing) was written to help select employees for drug testing.
> Program usage:
>
> -h, --help Displays this help info
> -l, --list-emplys Lists all employees in the database
> -s, --select Select employee for testing
> -r, --remove-emply Delete employee from database, usage: -d employee_name or id
> -e, --edit-emply Edit employee data in database, usage: -e employee_name or id
> field_to_change new_value
> -i, --insert-emply Insert new employee in database:
> must fit this format -- "id:or '','lastname, firstname', 'email',0"
> -f Display database name and full path
>
> This program was written by, Jason S. For the use of AA.
>
> """
>
> # import our needed modules
> import sqlite3 as sqlite
> import sys, getopt
>
> #set global vars
> global cursor
> global conn
>
>
> def usage():
> """ this just prints the usage in the doc string"""
> print __doc__
>
> def dbconnect(sql):
> """handel the connction to the sqlite db """
> dbConnection = sqlite.connect("drug-test.db")
> #set the cursor
> cursor = dbConnection.cursor()
> try:
> #execute the sql passed from the other funtions and return the results
> result = cursor.execute(sql)
> dbConnection.commit()
> except sqlite.Error, e:
> result = e.args[0]
>
> return result
>
>
> def listEmployees(sql):
> #list all records in the database
> listemp = dbconnect(sql)
> for lst in listemp:
> print "%s, %s, %s, %s" % (lst[0],lst[1],lst[2],lst[3])
>
> def selectOneEmployee(sql):
> #select a random record from the database
> listemp = dbconnect(sql)
> for empl in listemp:
> print empl[0]
>
> def removeOneEmployee(sqlchk,sqldel):
> #delete one employee by ID number
> chk = dbconnect(sqlchk)
>
> if chk.fetchone() != None:
> #check to make sure the ID is valid in the database
> emply = dbconnect(sqlchk)
> emply = emply.fetchall()
> print "trying to remove employee %s" % (emply)
> try:
> dbconnect(sqldel)
>
> except sqlite.Error, e:
> result = e.args[0]
> print result
>
> else:
> print "Employees ID is invalid, please check the ID number"
>
> def insertEmployee(sql):
> #insert a new employee into the database
> print sql
> try:
> dbconnect(sql)
>
> except sqlite.Error, e:
> result = e.args[0]
> print result
>
> def main(argv):
> """The purpose of this program is to select an empployee from this database for random drug
> testing. This program can also perform maintainance on same database."""
> if argv == []:
> sql = "SELECT name FROM employees ORDER BY RANDOM() LIMIT 1;"
> print "The following employee has been selected\n"
> selectOneEmployee(sql)
>
> try:
> #get the options passed by the user
> opts, args = getopt.getopt(argv, "hlsr:e:i:d",["Help","list-emplys","select","remove-emply=","edit-emply=","insert-emply="])
>
> except getopt.GetoptError:
> usage()
> sys.exit(2)
>
> #check throught the options and respond accordingly
> for opt, arg in opts:
> if opt in ("-h", "--help"):
> usage()
> sys.exit()
> elif opt == '-d':
> global _debug
> _debug = 1
> elif opt in ("-l", "--list-emplys"):
> sql = "select * from employees"
> listEmployees(sql)
> elif opt in ("-s","--select"):
> sql = "SELECT name FROM employees ORDER BY RANDOM() LIMIT 1;"
> print "The following employee has been selected\n"
> selectOneEmployee(sql)
> elif opt in ("-r","--remove-emply"):
> if arg == "":
>
> sys.exit("You must provice the ID for the employee to remove")
> sqlchk = "select * from employees where id = \"%s\"" % (arg)
> sqldel = "delete from employees where id = \"%s\"" % (arg)
> removeOneEmployee(sqlchk,sqldel)
> elif opt in ("-i", "--insert-emply"):
> sql = "insert into employees values(%s)" % (arg)
> insertEmployee(sql)
>
> if __name__ == "__main__":
> main(sys.argv[1:])
>
> ########## END ###################
>
> Thanks everyone.
>
>
> Jason
>
>
>
> ..·><((((º>
you might consider using optparse
(http://docs.python.org/library/optparse.html) to handle your input
stream. That will help you decouple your interface from the working
code. Easier to swap in a gui.
Steven
More information about the Python-list
mailing list