Flask利用pymysql出現Warning:1366的解決辦法 頂 原

寫在前面

之前我在寫一個Flask項目,然後運行models.py文件時,出現了一個Bug,就是這個:

F:\book\lib\site-packages\pymysql\cursors.py:170: Warning: (1366, "Incorrect string value: '\\xD6\\xD0\\xB9\\xFA\\xB1\\xEA...' for column 'VARIABLE_VALUE' at row 481")

當時我找了很多資料都是說數據庫的編碼出了問題,讓我查看數據庫的編碼格式: 在查詢框內輸入:

show variables like '%char%';

就出現這麼一大堆,但是都是utf8,記住utf8mb4是utf8的超集,也就是比它還能表示更多的字符如eimijo等,想更加了解的請點擊這裏:utf8mb4與utf8的區別

然後我又打開的mysql的安裝包,甚至查看了它的my.ini文件,不知道它在哪可以點擊這裏:MySQL配置文件-my.ini,因爲我的安裝目錄不在C盤,我的是這裏:

F:\mysql\mysql-5.7.21-winx64

打開my.ini文件,我的配置是這樣:

[mysqld]  
port = 3306  
basedir=F:/mysql/mysql-5.7.21-winx64
datadir=F:/mysql/mysql-5.7.21-winx64/data   
max_connections=200  
character-set-server=utf8mb4  
default-storage-engine=INNODB  
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES  
[mysql]  
default-character-set=utf8  

也是沒有問題的!

後來通過查找源代碼,才發現這是mysql5.7的一個Bug,但是我們還是可以解決的!

解決方法

我們之前的配置是:安裝pymysql,然後導入使用

import pymysql


app.config["SQLALCHEMY_DATABASE_URI"] = "mysql+pqmysql://賬號:密碼@localhost/appname"

現在我們不用這個了,改用mysql-connector-python,你可以點擊這裏到官網進行下載,然後在你虛擬環境下面的Lib進行安裝即可,也可以在Pycharm中直接進行安裝。官網的地址請點擊這裏mysql-connector-python.

然後配置如下:

import mysql.connector

app.config["SQLALCHEMY_DATABASE_URI"] = "mysql+mysqlconnector://賬號:密碼@localhost/appname"

然後再運行一下models.py文件,發現這個錯誤就沒有了!(前提是前面的數據庫表編碼格式已經修改正確了)

好了,本次的分享就到此爲止了,如有任何問題歡迎留言交流!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章