Python MySQL Connector de l'exécution de la deuxième instruction sql à l'intérieur du curseur de la boucle?

La logique suivante fonctionne avec le module mysqldb (voir python mysqldb plusieurs curseurs pour une connexion), mais j'obtiens l'erreur suivante avec mysql.connecteur cursor2.execute(sql)

"Non lus résultat trouvé."

Je me rends compte que je peux utiliser une jointure de combiner ces 2 simples instructions sql et d'éviter la nécessité d'un deuxième curseur, mais mon exemple dans la réalité est plus complexe et nécessite une deuxième instruction sql.

En supposant que j'en ai besoin pour exécuter séparer les 2 instructions sql (1 pour la boucle et 1 à l'intérieur de la boucle), comment cela doit être fait avec mysql.connecteur de module?

import datetime
import mysql.connector

db = mysql.connector.connect(user='alan', password='please', host='machine1', database='mydb')

cursor1 = db.cursor()
cursor2 = db.cursor()

sql = """
SELECT userid, 
       username,
       date
  FROM user
 WHERE date BETWEEN %s AND %s
"""

start_date = datetime.date(1999, 1, 1)
end_date   = datetime.date(2014, 12, 31)

cursor1.execute(sql, (start_date, end_date))

for (userid, username, date) in cursor1:

    sql = """
        select count(*)
        from request
        where assigned = '%s'
    """ % (userid)

    cursor2.execute(sql)
    requestcount = cursor2.fetchone()[0]

    print userid, requestcount

cursor2.close()
cursor1.close()
db.close()

Ce mysqldb version fonctionne très bien:

import datetime
import MySQLdb 

db = MySQLdb.connect(user='alan', passwd='please', host='machine1', db='mydb')

cursor1 = db.cursor()
cursor2 = db.cursor()

sql = """
SELECT userid, 
       username,
       date
  FROM user
 WHERE date BETWEEN %s AND %s
"""

start_date = datetime.date(1999, 1, 1)
end_date   = datetime.date(2014, 12, 31)

cursor1.execute(sql, (start_date, end_date))

for (userid, username, date) in cursor1:

    sql = """
        select count(*)
        from request
        where assigned = '%s'
    """ % (userid)

    cursor2.execute(sql)
    requestcount = cursor2.fetchone()[0]

    print userid, requestcount

cursor2.close()
cursor1.close()
db.close()

OriginalL'auteur panofish | 2014-04-07