2016-12-06 115 views
0

使用Python 2.7.9,我试图分析出Python的MySQL和上下文管理器:__exit__属性错误

的代码是

class MySQLCursor: 
    def __init__(self, commit=False): 
     self.commit = commit 

    def __enter__(self): 
     self.conn = MySQLdb.connect(host=_MYMYSQLHOST, 
            user=_MYMYSQLUSER, 
            passwd=_MYMYSQLPASSWD, 
            db=_MYMYSQLDB) 
     self.cursor = self.conn.cursor() 
     return self.cursor 

    def __exit__(self, exc_type, exc_val, exc_tb): 
     if self.commit: 
      self.conn.commit() 
     self.cursor.close() 
     self.conn.close() 
     return 

使用它的开放和MySQL连接的关闭和游标作为

with MySQLCursor as cursor: 
    cursor.execute("SELECT VERSION()") 
    row = cursor.fetchone() 
    print "server version:", row[0] 

我得到错误信息

AttributeError: __exit__ 

这是一个MySQL问题或上下文管理器的问题?

+2

尝试'与MySQLCursor()作为游标' –

回答

2

只是做with MySQLCursor() as cursor: - With语句需要具有__enter____exit__方法的类的实例,而不是类本身。

+0

有意义且有效。谢谢。 – 576i