python如何循环sql语句_Python MySQL连接器在游标循环中执行第二个sql语句?

以下逻辑适用于mysqldb模块(请参见python mysqldb multiple cursors for one connection),但我在cursor2.execute(sql)上的mysql.connector中得到以下错误

“找到未读结果。”

我意识到我可以使用一个join来组合这两个简单的sql语句,从而避免需要第二个游标,但是我的实际例子更复杂,需要第二个sql语句。

假设我需要执行两个单独的sql语句(一个用于循环,一个在循环内),那么如何使用mysql.connector模块来完成这项工作?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()

这个mysqldb版本工作得很好: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()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值