Multiple result sets in MySQL Connector/Python
Latest code of MySQL Connector/Python on launchpad has support for multiple result sets when you execute a stored procedure. We also changed the way the actual result of the routine is returned to conform to PEP249.
Here is some example code: it creates a stored procedure which generates 2 result sets. You can get the result by calling next_resultset(), which is returning a MySQLCursorBuffered.
cur = cnx.cursor() cur.execute("DROP PROCEDURE IF EXISTS multi") proc = """ CREATE PROCEDURE multi(IN pFac1 INT, IN pFac2 INT, OUT pProd INT) BEGIN SELECT 1,'a' as FooBar; SELECT 2; SET pProd := pFac1 * pFac2; END""" cur.execute(proc) result = cur.callproc("multi", (5, 6, 0)) print "Result:", result extcur = cur.next_resultset() i = 1 while extcur: rows = extcur.fetchall() print "Result set #%d:" % i print rows extcur = cur.next_resultset() i += 1 cur.close()
Result: ('5', '6', 30) Result set #1: [(1, u'a')] Result set #2: [(2,)]
As mentioned above: this will be part of 0.1.4-devel release due next week. Comments are welcome through the associated bug report.