クエリを実行しようとしたとき-
select * from students where id = 20
PythonのMySQLdbライブラリを使用して、例外が発生していまし_mysql_exceptions.OperationalError
たMySQL server has gone away
。私の友人の何人かは、既存のmysql接続を使用するように私に提案しました。そのため、このリンクを参照し始め、以下のコードのリンクから同じシングルトンクラスを使用しましたが、それでも同じ例外が発生します。
#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>
同じインスタンスを意味します。では、何が問題だと思われますか?なぜこれを解決できないのですか?