MySQL中的Python;连接在第一个循环后关闭for循环

时间:2013-01-28 14:37:20

标签: python-2.7 database-connection mysql-python

我的MySQL连接在一个循环周期后关闭。我可能在使用mysql对象时做错了什么。它输出一个周期然后退出并出现错误。

这是我的代码:

cnx = mysql.connector.connect(**config)
cursor = cnx.cursor()

fetch_ids = cnx.cursor()
query = ("SELECT * FROM items WHERE has_recipe = 1")
fetch_ids.execute(query)

count = 0
for (data) in fetch_ids:
    fetch_details = cnx.cursor()
    query = ("SELECT * FROM recipes WHERE recipe_id = " + str(data[1]))
    fetch_details.execute(query)

我得到的错误是:

Traceback (most recent call last):
  File "trade.py", line 47, in <module>
    fetch_details = cnx.cursor()
  File "/Users/allendar/Desktop/mysql/connector/connection.py", line 1076, in cursor
    raise errors.OperationalError("MySQL Connection not available.")
mysql.connector.errors.OperationalError: MySQL Connection not available.

2 个答案:

答案 0 :(得分:4)

MySQL不支持真实游标,并且库只模拟它们。因此,每次只能为每个连接运行一个游标。

在循环中你打开第二个游标,这不是MySQL可以处理的东西。在将光标用于新查询之前,请先读取第一个查询中的所有行。

答案 1 :(得分:3)

你要多次调用cnx.cursor()。只需像第一次一样调用光标,并为以下查询重用相同的对象。 当你完成与db的处理时,记得在某个地方放一个cnx.close()来清理会话。