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

寫在前面

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

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")

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

show variables like '%char%';

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

而後我又打開的mysql的安裝包,甚至查看了它的my.ini文件,不知道它在哪能夠點擊這裏:MySQL配置文件-my.ini,由於個人安裝目錄不在C盤,個人是這裏:sql

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

也是沒有問題的!app

後來經過查找源代碼,才發現這是mysql5.7的一個Bug,可是咱們仍是能夠解決的!編碼

解決方法

咱們以前的配置是:安裝pymysql,而後導入使用.net

import pymysql


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

如今咱們不用這個了,改用mysql-connector-python,你能夠點擊這裏到官網進行下載,而後在你虛擬環境下面的Lib進行安裝便可,也能夠在Pycharm中直接進行安裝。官網的地址請點擊這裏mysql-connector-python.code

而後配置以下:server

import mysql.connector

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

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

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

相關文章
相關標籤/搜索