【发布时间】:2014-05-20 05:07:11
【问题描述】:
以下逻辑适用于 mysqldb 模块(请参阅python mysqldb multiple cursors for one connection),但在 cursor2.execute(sql) 上使用 mysql.connector 时出现以下错误
“找到未读结果。”
我意识到我可以使用连接来组合这两个简单的 sql 语句并避免需要第二个游标,但我的实际示例更复杂,需要第二个 sql 语句。
假设我需要执行 2 个单独的 sql 语句(1 个用于循环,1 个在循环内),应该如何使用 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()
【问题讨论】:
标签: python mysql mysql-python mysql-connector