Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python与MySql;SAWarning:Unicode类型接收到非Unicode绑定参数值“;错误_Python_Mysql_Unicode_Sqlalchemy - Fatal编程技术网

Python与MySql;SAWarning:Unicode类型接收到非Unicode绑定参数值“;错误

Python与MySql;SAWarning:Unicode类型接收到非Unicode绑定参数值“;错误,python,mysql,unicode,sqlalchemy,Python,Mysql,Unicode,Sqlalchemy,在问这个问题之前,我已经查看了类似网站上的其他帖子。提供的答案只是压制了警告,而不是提出补救措施 我有一个用Python+Flask编写的web应用程序,它处理用unicode格式的jquery发送的异步请求。 内容类型:application/json;字符集=UTF-8 下面是从我的web浏览器发送到服务器的数据示例。数据可以是拉丁字符和非拉丁字符的混合。我注意到非拉丁字符是编码的,但拉丁字符不是 正文:“第三方”为“第三方”。 ÐеÑÐ¼Ð¾Ñ‚Ñ€Ñ Ð½Ð° поÑредÑ

在问这个问题之前,我已经查看了类似网站上的其他帖子。提供的答案只是压制了警告,而不是提出补救措施

我有一个用Python+Flask编写的web应用程序,它处理用unicode格式的jquery发送的异步请求。
内容类型:application/json;字符集=UTF-8

下面是从我的web浏览器发送到服务器的数据示例。数据可以是拉丁字符和非拉丁字符的混合。我注意到非拉丁字符是编码的,但拉丁字符不是

正文:“第三方”为“第三方”。 ÐеÑÐ¼Ð¾Ñ‚Ñ€Ñ Ð½Ð° поÑредÑтвенные отзывы, фильм должен быть прикольным. Вот его опиÑание "

下面是我的MySqlAlchemy类的定义

class Post(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    body = db.Column(db.Unicode(1024))
现在,当我尝试将数据提交到数据库时,我收到以下错误:

SAWarning:Unicode类型接收到非Unicode绑定参数m值。
param.append(processorskey)

在此期间,我使用Flask Restful组件来处理HTTP请求:

class PostListApi(Resource):
    decorators = [login_required]
    def post(self):
        body=request.json['body']
        post = Post(body=body)
        db.session.add(post)
        db.session.commit()

问题是我应该如何在服务器端正确处理数据,从而确保没有将非unicode字符写入数据库?

您可以简单地强制正文使用unicode

class PostListApi(Resource):
    decorators = [login_required]
    def post(self):
        body=request.json['body']
        post = Post(body=unicode(body))
        db.session.add(post)
        db.session.commit()

ascii保持原样没关系。如何处理中间的数据?alko:我已经更新到postWhat python版本了?Python2和Python3处理Unicode的方式有很大的不同!