Discuss / Python / 被这个问题“AttributeError: 'Connection' object has no attribute '_writer'” 搞了三天, 没法往下学习, 今天终于好了...

被这个问题“AttributeError: 'Connection' object has no attribute '_writer'” 搞了三天, 没法往下学习, 今天终于好了...

Topic source

一雷叔一

#1 Created at ... [Delete] [Delete and Lock User]

Traceback (most recent call last): File "apptest.py", line 13, in <module> loop.rununtilcomplete(test(loop)) File "C:\Python34\lib\asyncio\baseevents.py", line 316, in rununtilcomplete return future.result() File "C:\Python34\lib\asyncio\futures.py", line 275, in result raise self.exception File "C:\Python34\lib\asyncio\tasks.py", line 238, in _step result = next(coro) File "apptest.py", line 8, in test yield from orm.create_pool(loop = loop, user='www-data', password='www-data', db='awesome', charset='utf-8') File "C:\Users\zehu\PycharmProjects\WebApp\www\orm.py", line 24, in create_pool loop=loop File "C:\Python34\lib\site-packages\aiomysql\pool.py", line 19, in create_pool yield from pool._fill_free_pool(False) File "C:\Python34\lib\site-packages\aiomysql\pool.py", line 139, in _fill_free_pool **self._conn_kwargs) File "C:\Python34\lib\site-packages\aiomysql\connection.py", line 67, in connect autocommit=autocommit, echo=echo, loop=loop) File "C:\Python34\lib\site-packages\aiomysql\connection.py", line 159, in __init self._encoding = charset_by_name(self._charset).encoding AttributeError: 'NoneType' object has no attribute 'encoding' Exception ignored in: <bound method Connection.__del of <aiomysql.connection.Connection object at 0x0000000003378A58>> Traceback (most recent call last): File "C:\Python34\lib\site-packages\aiomysql\connection.py", line 652, in __del AttributeError: 'Connection' object has no attribute '_writer'

在网上搜,没几个人遇到这问题,尝试各种修改,各种找错, 还跑到 aiomysql 模块里面去改人家的 Connection.py 文件,就是不行,一直报错! 改完了, 报连接不上mysql的 2003 的错误, 又在网上找,按照提供的方法修改,还是不行。。。 最后实在是崩溃了, 卸载了 aiomysql 和它关联的 pymysql 模块, 重新安装,终于好了!!!

注意, 由于aiomysql 可能和 pymysql 版本是固定对应的, 所以前面装了pymysql 可能会导致跟后边装的aiomysql 对应不上, 我是把两个模块的多个版本彻底卸载干净,清理完后,重新使用 setup.py 的方式安装的!

你好,我也是遇到你这个问题了,也是重新卸载了aiomysql跟pymysql,然后用pip install aiomysql的同时也安装了pymysql,版本同为0.0.6,但是仍然报错,我想问问你是怎样解决的呢?

一雷叔一

#3 Created at ... [Delete] [Delete and Lock User]

之前的课程里边, 可能也安装了其它版本的 pymysql 之类的, python里边貌似支持用不同安装方式安装同一版本的插件, 所以你卸载的时候最好保证卸载干净了

pip freeze

列出所有的已安装的包, 看看跟这次相关的包是否清理干净, 最好是用哪种方式安装的,就用哪种方式卸载。然后重新安装 aiomysql

Galalxy

#4 Created at ... [Delete] [Delete and Lock User]

现在来回复说不定有点晚了,同志们,遇到上述问题是因为在创建数据库链接库的时候把编码那个关键字的值写错了,应该是“utf8” 而不是“utf-8”

月渐殇

#5 Created at ... [Delete] [Delete and Lock User]

我也卸载了aiomysql和pymysql,问题还是有啊

5080sy

#6 Created at ... [Delete] [Delete and Lock User]

给Galalxy赞一个

感谢!

Lord_Tyrion

#8 Created at ... [Delete] [Delete and Lock User]

给Galalxy赞一个

话说廖大神是不是故意让我们踩踩坑的?

_炫Z_楚昭

#9 Created at ... [Delete] [Delete and Lock User]
    __pool = await aiomysql.create_pool(
        loop=loop,
        host=kwargs.get('host', 'localhost'),
        port=kwargs.get('port', 3306),
        user=kwargs['user'],
        password=kwargs['password'],
        db=kwargs['db'],
        charset=kwargs.get('charset', 'utf8'),
        autocommit=kwargs.get('autocommit', True),
        maxsize=kwargs.get('maxsize', 10),
        minsize=kwargs.get('minsize', 1)
    )

谢谢Galalxy,把数据库连接编码utf-8改为utf8就可以了!

seven_boo

#10 Created at ... [Delete] [Delete and Lock User]

主要是数据库不熟悉,不然遇到这种坑一看就知道了


  • 1
  • 2

Reply