title: Getting return values from a MySQL stored procedure in Python, using MySQLdb
body: <p>I've got a stored procedure in a MySQL database that simply updates a date column and returns the previous date.  If I call this stored procedure from the MySQL client, it works fine, but when I try to call the stored procedure from Python using MySQLdb I can't seem to get it to give me the return value.</p>
  
  <p>Here's the code to the stored procedure:</p>
  
  <pre><code>CREATE PROCEDURE test_stuff.get_lastpoll()
  BEGIN
      DECLARE POLLTIME TIMESTAMP DEFAULT NULL;
      START TRANSACTION;
  
      SELECT poll_date_time
        FROM test_stuff.poll_table
        LIMIT 1 
        INTO POLLTIME
      FOR UPDATE;
  
      IF POLLTIME IS NULL THEN
          INSERT INTO 
                 test_stuff.poll_table 
                 (poll_date_time)
          VALUES 
                 ( UTC_TIMESTAMP() );
  
          COMMIT;
          SELECT NULL as POLL_DATE_TIME;
      ELSE
          UPDATE test_stuff.poll_table SET poll_date_time = UTC_TIMESTAMP();
          COMMIT;
          SELECT DATE_FORMAT(POLLTIME, '%Y-%m-%d %H:%i:%s') as POLL_DATE_TIME;
      END IF;
  END
  </code></pre>
  
  <p>The code I'm using to try to call the stored procedure is similar to this:</p>
  
  <pre><code>#!/usr/bin/python
  
  import sys
  import MySQLdb
  
  try:
      mysql = MySQLdb.connect(user=User,passwd=Passwd,db="test_stuff")
      mysql_cursor = mysql.cursor()
  
      results=mysql_cursor.callproc( "get_lastpoll", () )
      print results
  
      mysql_cursor.close()
      mysql.close()
  
  except MySQLdb.Error, e:
      print "MySQL Error %d:  %s" % ( e.args[0], e.args[1] )
      sys.exit(1)
  </code></pre>
  
  <p>I know that you can do IN and OUT parameters, but from what I can determine from the MySQLdb documentation, this isn't possible with MySQLdb.  Does anyone have any clue how I could get the results of the stored procedure?</p>
  
  <p>If I run it from a SQL tool, here's the output:</p>
  
  <pre><code>POLL_DATE_TIME       
  -------------------  
  2009-02-18 22:27:07  
  </code></pre>
  
  <p>If I run the Python script, it returns back an empty set, like this:</p>
  
  <pre><code>()
  </code></pre>