簡體   English   中英

Python與MySql“SAWarning:Unicode類型接收到非unicode綁定參數值”錯誤

[英]Python with MySql “SAWarning: Unicode type received non-unicode bind param value” error

在提出這個問題之前,我已經檢查了類似的其他帖子。 提供的答案只是壓制了警告,而不是提出補救措施。

我有一個用Python + Flask編寫的Web應用程序,它以unicode格式處理用jquery發送的異步請求。 Content-Type:application/json; charset=UTF-8

以下是從我的Web瀏覽器發送到服務器的數據示例。 數據可以是拉丁字符和非拉丁字符的混合。 我注意到非拉丁字符是編纂的,但拉丁字母不是。

身體:“d¥Ð¾Ñ‡ÑƒNN ...оÐ'иÑ,ьна#N“DD»ÑŒÐ¼DSD°N€Ñ,ÐμлNOEÐÐμÑмоÑ,Ñ€ÑнапоÑÑ€ÐμÐ'。 ÑÑ,вÐμннÑ<ÐμоÑ,зN <вÑ<,N“DD»ÑŒÐ¼Ð'олжÐμнd±Ñ<Ñ,ьприкольнÑ<м。Ð'Ð¾Ñ ,ÐμгоопиÑаниÐμhttp ://www.allocine.fr/film/fichefilm_gen_cfilm=202971.html

這是我的MySqlAlchemy類的定義

class Post(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    body = db.Column(db.Unicode(1024))

現在,當我嘗試將數據提交到數據庫時,我收到以下錯誤:

SAWarning:Unicode類型接收到非unicode綁定參數值。
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()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM