我正在尝试将游标打开到MySQL-DB。但是我收到了这个错误:
'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语句,一切都运行良好。
奇怪的是,一切看起来都是正确的,对于其他具有相同功能的连接,一切都运行良好。我不知道如何解决这个错误。我希望有人能指出我正确的方向。
答案 0 :(得分:0)
我会更改检查连接是否打开的语句,检查conn是否为none以及连接是否打开。因为你总是执行setValue
函数,我建议你调用__init__
函数内的连接。
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 Connector,您需要在执行insert或update语句后调用commit。
cur = self.conn.cursor()
cur.execute("...")
self.conn.commit()