Access MySQL Database with Python

The first Python script shows you how to open a connection to your MySQL database. It assumes you already have a table called student in your database. For instructions on how to create that table, read the MySQL Tutorial. You must run this script from the z server.

import MySQLdb

def main():

  # Connect to the MySQL database
  db = MySQLdb.connect(host = 'z.cs.utexas.edu', user = 'userName', \
       passwd = 'password', db = 'dbName')

  # Creation of a cursor
  cursor = db.cursor()

  # Execution of a SQL statement
  cursor.execute ("select * from student")

  # Get the total number of rows
  numrows = int (cursor.rowcount)
  print "numrows = ", numrows

  # Get and display the rows one at a time
  for i in range (numrows):
    row = cursor.fetchone()
    if (row):
      print row[0], row[1], row[2], row[3]

  # Execution of an insert SQL statement
  cursor.execute ("insert into student (lastName, firstName, major, \
  bDay) values ('Mouse', 'Mickey', 'Dance', '1928-11-18')")

  # Check that the insert operation worked
  print
  print "Check Insert Operation"
  cursor.execute ("select * from student")
  numrows = int (cursor.rowcount)
  for i in range (numrows):
    row = cursor.fetchone()
    if (row):
      print row[0], row[1], row[2], row[3]

  # Execution of an update SQL statement
  cursor.execute ("update student set major = 'Acting' where \
  lastName = 'Mouse' and firstName = 'Mickey'")

  # Check that the update operation worked
  print
  print "Check Update Operation"
  cursor.execute ("select * from student")
  numrows = int (cursor.rowcount)
  for i in range (numrows):
    row = cursor.fetchone()
    if (row):
      print row[0], row[1], row[2], row[3]

  # Execution of a delete SQL statement
  cursor.execute ("delete from student where lastName = 'Mouse' and \
  firstName = 'Mickey'")

  # Check that the delete operation worked
  print
  print "Check Delete Operation"
  cursor.execute ("select * from student")
  numrows = int (cursor.rowcount)
  for i in range (numrows):
    row = cursor.fetchone()
    if (row):
      print row[0], row[1], row[2], row[3]

  # Close the cursor
  cursor.close()

main()

The second script shows you how to read from an input file called names.txt and insert data into the table student that has already been created. This script makes use of parameterized SQL statements. Run this script from the z server.

import MySQLdb, string

def main():

  # Connect to the MySQL database
  db = MySQLdb.connect(host = 'z.cs.utexas.edu', user = 'userName', \
       passwd = 'password', db = 'dbName')

  # Check if connection was successful
  if (db):
    print "Connection successful"
    print
  else:
    return

  # Creation of a cursor
  cursor = db.cursor()

  # Define variables
  table = 'student'

  # Execution of a parameterized SQL statement
  cursor.execute ("select * from %s" % (table))

  # Get the total number of rows
  numrows = int (cursor.rowcount)
  print "numrows = ", numrows

  # Get and display the rows one at a time
  for i in range (numrows):
    row = cursor.fetchone()
    if (row):
      print row[0], row[1], row[2], row[3]

  # Define variables
  lastName = 'Mouse'
  firstName = 'Mickey'
  major = 'Dance'
  bDay = '1928-11-18'

  # Execution of an insert SQL statement
  cursor.execute ("""insert into student (lastName, firstName, major, bDay) 
  values (%s, %s, %s, %s)""", (lastName, firstName, major, bDay))

  # Check that the insert operation worked
  print
  print "Check Insert Operation"
  cursor.execute ("select * from student")
  numrows = int (cursor.rowcount)
  print "numrows = ", numrows
  for i in range (numrows):
    row = cursor.fetchone()
    if (row):
      print row[0], row[1], row[2], row[3]

  # Read data from a file
  data = []
  infile = open ("./names.txt", "r")
  for line in infile:
    line = line.rstrip("\n")
    line = line.strip()
    seq = line.split()
    seq = tuple (seq)
    data.append(seq)
  infile.close()

  # Multiple execution of insert SQL statement
  cursor.executemany ("""insert into student (lastName, firstName, major, 
  bDay) values (%s, %s, %s, %s)""", data)

  # Get all the rows at once
  print
  print "Getting all the rows at once for multiple entry"
  cursor.execute ("select * from student")
  result_set = cursor.fetchall()
  for record in result_set:
    print record[0], record[1], record[2], record[3]

  # Execution of an update SQL statement
  newMajor = 'Acting'
  cursor.execute ("""update student set major = %s where 
  lastName = 'Mouse' and firstName = 'Mickey'""", (newMajor))

  # Check that the update operation worked
  print
  print "Check Update Operation"
  cursor.execute ("select * from student")
  numrows = int (cursor.rowcount)
  for i in range (numrows):
    row = cursor.fetchone()
    if (row):
      print row[0], row[1], row[2], row[3]

  # Execution of a delete SQL statement
  cursor.execute ("delete from student where lastName = 'Mouse'")
  cursor.execute ("delete from student where lastName = 'Duck' and \
  firstName != 'Donald'")

  # Check that the delete operation worked
  print
  print "Check Delete Operation"
  cursor.execute ("select * from student")
  numrows = int (cursor.rowcount)
  for i in range (numrows):
    row = cursor.fetchone()
    if (row):
      print row[0], row[1], row[2], row[3]

  # Close the cursor
  cursor.close()

main()