python - weakly-referenced object no longer exists? 数据库连接关闭问题

 乌海阿斯顿 发布于 2022-10-25 17:50
#! python3
import mysql.connector
class A:
    def __init__(self):
        self.dbconfig = {....}
        self.conn = mysql.connector.connect(**self.dbconfig)
        self.cur = self.conn.cursor()
    def __del__(self):
        self.cur.close()
        self.conn.close()

数据库连接也成功了,但是执行完该类后就会报错:

Exception ignored in: >
Traceback (most recent call last):
  File "****.py", line *, in __del__
  File "*****\Python35\lib\site-packages\mysql\connector\cursor.py", line 344, in close
ReferenceError: weakly-referenced object no longer exists

还请知道什么原因的司机解惑!万分感谢!
按stackoverflow上的方案就是我写的这样,但是还是有问题,难道是我的翻译软件有问题?

2 个回答
  • 可能是你配置写错了,没连接上mysql
    如果是这句代码self.cur = self.conn.cursor()报的错,说明你没连接上

    2022-10-26 23:33 回答
  • 好吧,自己答一下。并不知道是什么原因导致的错误,等以后水平高点再来回答。暂时解决办法:

    import mysql.connector
    class A:
        def __init__(self):
            self.dbconfig = {...}
            try:
                self.conn = mysql.connector.connect(**self.dbconfig)
                self.cur = self.conn.cursor()
                print('mysql conn success!')
            except:
                print("mysql conn error!")
    
        def __del__(self):
            #if self.cur:
            #    self.cur.close()
            if self.conn:
                self.conn.close()
    if __name__ == '__main__':
        a = A()

    补充:
    事实证明,不能在__del__()里面close游标

    2022-10-26 23:33 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有