Проблемы с пониманием того, что не так с каким-то красивым кодом c Python 3. Это класс базы данных, использующий соединитель MySQL, который затем наследуется в другом классе.
Класс базы данных (database.py):
import mysql.connector
config = {
'host': 'localhost',
'user': '...',
'password': '...',
'database': '...'
}
class Database:
def __init__(self):
self.connect()
def connect(self):
try:
db = mysql.connector.connect(**config)
self.cursor = db.cursor()
except mysql.connector.Error as err:
print(err.msg)
return False
Класс, наследующий класс базы данных:
import mysql.connector
import datetime
from database import Database
class Logger(Database):
def __init__(self):
super().__init__()
def get_row(self, id):
try:
sql = ("SELECT * FROM logs WHERE id = %s")
self.cursor.execute(sql, (id,))
result = cursor.fetchone()
return result
except mysql.connector.Error as err:
print(err.msg)
return False
И вызывающий код ...
obj = Logger()
data = obj.get_row(2)
Ошибка слабой ссылки (на курсоре):
Traceback (most recent call last):
File "examples.py", line 71, in <module>
data = obj.get_row(2)
File "examples.py", line 28, in get_row
self.cursor.execute(sql, (id,))
ReferenceError: weakly-referenced object no longer exists
Что я здесь не понимаю? Я знаю, что ошибка c связана с использованием коннектора MySQL, поскольку я читал, что он использует слабые ссылки. Я просто смущен тем, как я могу повторно использовать / поддерживать ссылку на атрибут cursor родительского класса правильно в моих методах унаследованного класса. Заранее спасибо!