玩蛇网提供最新Python编程技术信息以及Python资源下载!

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

#! 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: <bound method A.__del__ of <__main__.**** object at 0x0000000001151358>>
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上的方案就是我写的这样,但是还是有问题,难道是我的翻译软件有问题?

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

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游标

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

玩蛇网文章,转载请注明出处和文章网址:https://www.iplaypy.com/wenda/wd13845.html

相关文章 Recommend

玩蛇网Python互助QQ群,欢迎加入-->: 106381465 玩蛇网Python新手群
修订日期:2017年05月23日 - 16时44分24秒 发布自玩蛇网

您现在的位置: 玩蛇网首页 > Python问题解答 > 正文内容
我要分享到:

必知PYTHON教程 Must Know PYTHON Tutorials

必知PYTHON模块 Must Know PYTHON Modules