Python 和 MySQL - 执行查询时出现弱引用错误

Python and MySQL - Weak Reference Error when Executing Query

我是 Python 和 MySQL 的新手,在使用连接 class 执行查询时遇到了一些问题。

这是我目前所拥有的:

class DbConnection:

    def __init__(self):
            db = mysql.connector.connect(
            host=cfg.mysql["host"], 
            user=cfg.mysql["user"], 
            passwd=cfg.mysql["passwd"], 
            database=cfg.mysql["database"]
            )
            self.cursor = db.cursor()
            
    def query(self, sql):
        self.cursor.execute(sql)
        return self.cursor.fetchall()
    
test = DbConnection()



test.query('SELECT * FROM DaycareDogs')

当我尝试 运行 这个(或任何查询)时,我收到“ReferenceError:弱引用对象不再存在”。

我对编码还很陌生,这是我的第一个真正的项目,所以我正在学习。

有什么我想念的吗?我已经看到了其他一些类似的问题,并按照建议做了,但仍然没有成功。

有什么建议吗?

谢谢!

尝试使数据库连接成为 class 的 属性,方法是在其前面添加 self

class DbConnection:

def __init__(self):
        self.db = mysql.connector.connect(
        host=cfg.mysql["host"], 
        user=cfg.mysql["user"], 
        passwd=cfg.mysql["passwd"], 
        database=cfg.mysql["database"]
        )
        self.cursor = self.db.cursor()
        
def query(self, sql):
    self.cursor.execute(sql)
    return self.cursor.fetchall()

test = DbConnection()

test.query('SELECT * FROM DaycareDogs')

由于变量db在局部作用域,当'init'构造函数结束时,变量会被销毁,因此连接