찾다

 >  Q&A  >  본문

#->예외 오류: 약한 참조 개체가 더 이상 존재하지 않습니다.

다음은 오류를 생성하는 코드입니다.

으아악

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粉070918777P粉070918777246일 전401

모든 응답(2)나는 대답할 것이다

  • P粉329425839

    P粉3294258392024-03-27 10:03:31

    내 추측으로는 귀하의 수업에 속하지 않기 때문에 연결이 끊어진 것 같습니다. 이 방법을 시도해 볼 수 있나요?

    으아아아

    회신하다
    0
  • 大鹏

    大鹏2024-03-27 11:06:29

    코드에서 mydb 데이터베이스 연결 개체는 Command 클래스의 __init__ 메서드에서 생성됩니다. 그러나 이 연결 개체는 클래스의 속성으로 저장되지 않으므로 __init__ 메서드가 완료되면 mydb 개체는 더 이상 어떤 변수에서도 참조되지 않으므로 Python의 가비지 수집기에 의해 재활용될 수 있습니다.

    이 문제를 해결하려면 __init__ 메소드 실행 후 재활용되지 않도록 데이터베이스 연결 객체 mydb를 클래스의 속성으로 저장해야 합니다. self.mydb와 같은 self에 대한 속성을 설정하여 이를 수행할 수 있습니다.

    rreee

    회신하다
    0
  • 취소회신하다