【问题标题】:Python mysql cursor closes connectionPython mysql游标关闭连接
【发布时间】:2015-03-08 06:28:09
【问题描述】:

我有一个获取我的 mysql 版本的 python 脚本,但我不断收到相同的错误 "_mysql_exceptions.InterfaceError: (0, '')"

我去python2.7控制台试了一下,

import MySQLdb
conn = MySQLdb.connect (host="localhost",user="user", passwd="pass", db="example")
cursor = conn.cursor()
cursor.execute ("SELECT VERSION()")

Traceback(最近一次调用最后一次): 文件“”,第 1 行,在
文件“/usr/local/lib/python2.7/site-packages/MySQLdb/cursors.py”,第 205 行,在执行中 self.errorhandler(self, exc, value) 默认错误处理程序中的文件“/usr/local/lib/python2.7/site-packages/MySQLdb/connections.py”,第 36 行 引发错误类,错误值 _mysql_exceptions.InterfaceError: (0, '')

和文件

import sys
import MySQLdb
try:
    conn = MySQLdb.connect (host="localhost",user="user", passwd="pass", db="example")
except MySQLdb.Error, e:
    print "Error %d: %s" % (e.args[0], e.args[1])
    sys.exit (1)
try:
    cursor = conn.cursor()
    cursor.execute ("SELECT VERSION()")
    row = cursor.fetchone ()
    print "server version:", row[0]
    cursor.close ()
except MySQLdb.Error, e:
    print "Error %d: %s" % (e.args[0], e.args[1])
    #sys.exit (1)
conn.close ()

[user@localhost]$ python b.py

错误 0: 回溯(最近一次通话最后): 文件“b.py”,第 18 行,在 conn.close() _mysql_exceptions.ProgrammingError: 关闭已关闭的连接

谢谢

【问题讨论】:

    标签: python mysql python-2.7 mysql-python


    【解决方案1】:

    如果您的 try 块成功运行,那么您将关闭连接两次。我认为您可以将其放入 finally 块中,这将解决您的问题。

    【讨论】:

      【解决方案2】:

      缩进第二个 conn.close(),否则你将在成功查询后关闭一个关闭的连接。

      【讨论】:

      • 如果我缩进第二个 conn.close() 它仍然不显示版本,它给出了同样的错误
      • 对不起...用新的眼光看这个,现在明白调试 b.py 不是您的目标,但了解您的连接问题才是。
      • 我的猜测是连接由于某种原因在内部关闭。如果您在第二个“try”块之前执行“print conn.open”会发生什么?
      • 环顾四周,当在另一个模块或进程中打开重复连接时,似乎会出现此错误。你有没有机会在这个连接上找到其他东西?
      • print conn.open = 1,然后我执行它会带来同样的错误,然后 conn.open = 0
      猜你喜欢
      • 1970-01-01
      • 2012-11-16
      • 2014-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-26
      • 2016-04-04
      相关资源
      最近更新 更多