2

我的 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.
4

2 回答 2

4

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

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

于 2013-01-28T15:30:33.773 回答
3

你调用 cnx.cursor() 太多次了。只需像您一样第一次调用游标,然后为以下查询重用相同的对象。当你处理完你的数据库后,记得在某处放置一个 cnx.close() 来清理会话。

于 2013-01-28T15:21:14.950 回答