python编码问题“AttributeError: ‘str‘ object has no attribute ‘decode‘”

今天把一份代码放到另一台电脑上去跑的时候,遇到这样一个问题。《AttributeError: 'str' object has no attribute 'decode'》。这种问题我也不是很熟悉,他说要有关编码encode\decode等的问题。因为我也不懂,所以就记录一下怎么去修改问题,并没有实现他的本质。

问题出现来源:我在做Django项目时候,跑一下迁移文件出现的结果。以前也遇到过,所以这次就记录下来。

解决办法:首先找到自己代码下的python安装路径下的mysql文件源,我的是这个位置。《D:\python\Lib\site-packages\django\db\backends\mysql》然后打开《operations.py》,找到下面这段代码。

def last_executed_query(self, cursor, sql, params):
        # With MySQLdb, cursor objects have an (undocumented) "_executed"
        # attribute where the exact query sent to the database is saved.
        # See MySQLdb/cursors.py in the source distribution.
        query = getattr(cursor, '_executed', None)
        if query is not None:
            query = query.decode(errors='replace')
        return query

将query = query.decode(errors='replace')改成query = query.encode(errors='replace')


def last_executed_query(self, cursor, sql, params):
        # With MySQLdb, cursor objects have an (undocumented) "_executed"
        # attribute where the exact query sent to the database is saved.
        # See MySQLdb/cursors.py in the source distribution.
        query = getattr(cursor, '_executed', None)
        if query is not None:
            query = query.encode(errors='replace')
        return query

 

你可能感兴趣的:(python,python)