寫在前面
之前我在寫一個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文件,發現這個錯誤就沒有了!(前提是前面的數據庫表編碼格式已經修改正確了)
好了,本次的分享就到此爲止了,如有任何問題歡迎留言交流!!!