我试图打开一个指向MySQL数据库的游标。但我有个错误:
'NoneType' object has no attribute 'cursor'
这是一个小的源代码:
class Sample:
def __init__(self):
self.conn = None
self.value = self.setValue()
def connect(self):
self.conn = MySQLdb.connect(...)
#cursor = self.conn.cursor()
#cursor.execute("SELECT ...")
#value = str(cursor.fetchone()[0])
#raise Exception(value)
#cursor.close() <- here everything is working fine
def setValue(self):
if (self.conn == None):
self.connect()
#raise Exception(self.conn.open)
cursor = self.conn.cursor() # ERROR: 'NoneType' object has no attribute 'cursor'
...
如果我使用例外我得到1。。。连接已打开。
如果我在'connect'函数中创建游标和SQL语句,一切都会正常工作。
奇怪的是,这一切看起来都是正确的,对于其他一些具有相同功能的连接,一切都工作得很好。我不知道如何解决这个错误。我希望有人能给我指出正确的方向。
最佳答案
我将更改检查连接是否打开的语句,同时检查conn是否为none以及连接是否打开。因为您总是执行setValue
函数,所以我建议您在__init__
函数中调用connect。
class Sample:
conn = None
def __init__(self):
self.connect()
self.value = self.setValue()
self.close()
def connect(self):
self.conn = MySQLdb.connect(...)
def close(self):
if self.conn:
self.conn.close()
def setValue(self):
if not self.conn and not self.conn.open:
self.connect()
cursor = self.conn.cursor()
另外,请记住,使用Python MySQL连接器,您需要在执行insert或update语句之后调用commit。
cur = self.conn.cursor()
cur.execute("...")
self.conn.commit()
关于python - Python:MySQL连接已打开,但无法创建游标,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16195118/