当我试图执行查询时 -
select * from students where id = 20
使用 Python 的MySQLdb库,我遇到了一个异常:_mysql_exceptions.OperationalError
说MySQL server has gone away
. 我的一些朋友建议我使用现有的 mysql 连接。所以我开始引用这个链接,并在下面的代码中使用了相同的Singleton类,它仍然给了我同样的异常。
#DBConnect.py
import MySQLdb as connector
from Singleton import Singleton
class DBConnect:
# As the link suggests
__metaclass__ = Singleton
def __init__(self):
self.dbConnection = connector.Connect(host = 'localhost', user = 'root',
passwd = 'root', db = 'school')
self.dbCursor = self.dbConnection.cursor(cursorclass=connector.cursors.DictCursor)
def getRecord(self,query):
self.dbCursor.execute(query)
result = self.dbCursor.fetchone()
return result
def __del__(self):
self.dbCursor.close()
self.dbConnection.close()
if __name__ == '__main__':
dc = DBConnect()
query = "select * from students where id = 20"
result = dc.getRecord(query)
我试图创建更多的DBConnect实例,例如 -
dc2 = DBConnect()
dc3 = DBConnect()
当我打印 dc、dc2 和 dc3 时,它给出了 -
<__main__.DBConnect object at 0x8a5fe8c>
<__main__.DBConnect object at 0x8a5fe8c>
<__main__.DBConnect object at 0x8a5fe8c>
意思是同一个例子。那么问题似乎是什么?为什么我不能解决这个问题?