首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python中的MySQL;连接在第一个循环后关闭

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

Stack Overflow用户
提问于 2013-01-28 22:37:20
回答 2查看 2.3K关注 0票数 2

我的MySQL连接在一个循环周期后关闭。我可能在使用mysql对象时做了一些错误的事情。它输出一个周期,然后退出并返回错误。

这是我的代码:

代码语言:javascript
复制
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)

我得到的错误是:

代码语言:javascript
复制
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.
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-28 23:30:34

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

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

票数 4
EN

Stack Overflow用户

发布于 2013-01-28 23:21:15

您调用cnx.cursor()的次数太多了。只需在第一次调用游标时,就像您正在做的那样,并在以下查询中重用相同的对象。在处理完db之后,记得在某个地方放置一个cnx.close()来清理会话。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14564359

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档