TypeError:支持flask api中所需的缓冲区API的对象

Posted

技术标签:

【中文标题】TypeError:支持flask api中所需的缓冲区API的对象【英文标题】:TypeError: object supporting the buffer API required in flask api 【发布时间】:2018-11-11 19:25:22 【问题描述】:

我有这段代码,我想将密码转换成 md5

class UserLogin(Resource):
    def post(self):

            # Parse the arguments

            parser = reqparse.RequestParser()
            parser.add_argument('username')
            parser.add_argument('password')
            args = parser.parse_args()

            _user = args['username']
            _userPassword = args['password']
            _h = hashlib.md5(_userPassword.encode())
            conn = mysql.connect()
            cursor = conn.cursor()
            cursor.execute('''select * from user where username = %s && password = %s''', (_user, _h))
            data = cursor.fetchall()

            return jsonify(data)

但错误提示:h = hashlib.md5(_userPassword.encode()) AttributeError: 'NoneType' 对象没有属性 'encode'

当我从 hashlib 中删除 encode() 时,错误返回是:_h = hashlib.md5(_userPassword) TypeError:需要支持缓冲区 API 的对象

请帮助我。我使用python3.6

【问题讨论】:

【参考方案1】:

而不是

_h = hashlib.md5(_userPassword.encode())

你可能想要

_h = hashlib.md5(_userPassword.encode()).hexdigest()

如果您要存储密码的 MD5 哈希,则

password = md5(%s)

如果绑定_h,部分查询将无法匹配。

【讨论】:

对不起,我忘了编辑它,因为密码 = md5(%s)''',(_user,_userPassword) 也不起作用。这就是为什么我需要使用 hashlib 并且您的答案仍然返回错误说没有属性“编码”感谢您的回答。 如果您收到“无属性”错误,则您省略了括号。但如果... password = md5(%s)", (..., _userPassword)) 不起作用,您可能会遇到更深层次的问题。 是的,戴夫先生,我已经发现了问题所在。 :) 它在我的系统上。 :) 我重新安装了我的操作系统,查询与 md5(%s) 一起工作。非常感谢。你给了我一些想法,它有一个更深层次的问题,我重新安装了 ubuntu :) 并且它解决了。再次感谢。抱歉,我回复晚了:)

以上是关于TypeError:支持flask api中所需的缓冲区API的对象的主要内容,如果未能解决你的问题,请参考以下文章

Flask-登录 | TypeError:需要支持缓冲区 API 的对象

如何从另一个表中获取数据并插入到 EF Core 中所需的表中

非支持库 android 项目所需的最低 API 级别

TypeError:找不到所需的参数“outImg”(位置 6)

TypeError(rescue 子句所需的类或模块)

webpack 包中所需的模块未定义