我的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.
答案 0 :(得分:4)
MySQL不支持真实游标,并且库只模拟它们。因此,每次只能为每个连接运行一个游标。
在循环中你打开第二个游标,这不是MySQL可以处理的东西。在将光标用于新查询之前,请先读取第一个查询中的所有行。
答案 1 :(得分:3)
你要多次调用cnx.cursor()。只需像第一次一样调用光标,并为以下查询重用相同的对象。 当你完成与db的处理时,记得在某个地方放一个cnx.close()来清理会话。