다음은 오류를 생성하는 코드입니다.
으아악Python 코드를 실행 중인데 다음과 같은 오류 메시지가 나타납니다.
import mysql.connector import datetime class Command: def __init__(self): mydb = mysql.connector.connect(host='localhost', passwd='1234', user='root', database='customers') self.mycursor = mydb.cursor() def execute(self, contest_id, url, Questions): date = datetime.date.today() Time = datetime.datetime.now().strftime("%I:%M") self.mycursor.execute(f"INSERT INTO contest(contest_name, url_tag, Questions, At_date, At_time) VALUES('{contest_id}', '{url}', {Questions}, '{date}', '{Time}')")
P粉3294258392024-03-27 10:03:31
내 추측으로는 귀하의 수업에 속하지 않기 때문에 연결이 끊어진 것 같습니다. 이 방법을 시도해 볼 수 있나요?
으아아아大鹏2024-03-27 11:06:29
코드에서 mydb 데이터베이스 연결 개체는 Command 클래스의 __init__ 메서드에서 생성됩니다. 그러나 이 연결 개체는 클래스의 속성으로 저장되지 않으므로 __init__ 메서드가 완료되면 mydb 개체는 더 이상 어떤 변수에서도 참조되지 않으므로 Python의 가비지 수집기에 의해 재활용될 수 있습니다.
이 문제를 해결하려면 __init__ 메소드 실행 후 재활용되지 않도록 데이터베이스 연결 객체 mydb를 클래스의 속성으로 저장해야 합니다. self.mydb와 같은 self에 대한 속성을 설정하여 이를 수행할 수 있습니다.
rreee